自定义POST保存导致500错误

时间:2015-10-13 作者:momn99

遇到500错误的问题。有时会保存更改,通常不会。我已经输出了$key/$值,以验证它是否到达函数和foreach。输出是反复出现的第一个键/值对。。。

我这样做是因为我将有未知数量的“官员”,这些官员将作为自定义职位类型输出。

$name = \'officer\' . \'-\' . $officer_id . \'-\' . $count;
    ?>
        <label for="<?php echo $name; ?>">Officer #<?php echo $count; ?></label>    
        <input type="text" name="<?php echo $name; ?>" value="<?php echo $officer_info[0]->post_title; ?>">
        <br />
    <?php
    $count++;
我试着以阵型的形式进入军官队伍:

$name = \'officer\' . \'-\' . $officer_id . \'-\' . $count;
    ?>
        <label for="[\'<?php echo $name; ?>\']">Officer #<?php echo $count; ?></label>    
        <input type="text" name="<?php echo $name; ?>" value="<?php echo $officer_info[0]->post_title; ?>">
以id为键,无更改。

如果$键中没有“officer”,我会尝试继续,但没有更改。我尝试了“pre\\u post\\u update”而不是“save\\u post”,没有任何更改。我添加了优先级和变量数(10,2),没有任何变化。

add_action( \'save_post\', \'officers_onto_board_page_save\', 10, 2 );
function officers_onto_board_page_save( $post_id ) {
    global $wpdb;

    // if our current user can\'t edit this post, bail
    if( !current_user_can( \'edit_post\' ) ) {
        return;
    } 

    foreach ($_POST as $key => $item) {
        echo $key . \' , \' . $item;

        if (strpos($key, \'officer\') == 0) {
            $parts = explode(\'-\', $key);

            $my_post = array(
                  \'ID\'           => $parts[1],
                  \'post_title\'   => $item
              );
            wp_update_post( $my_post );
        }
    } 
}
如有任何建议,将不胜感激。

响应示例:\\u wpnoce,dc7a6ea0\\u wpnoce,dc7a6ea0\\u wpnoce,dc7a6ea0\\u wpnoce,dc7a6ea0\\u wpnoce,dc7a6ea0\\u wpnoce,dc7a6ea0\\u wpnoce,dc7a6ea0(反复)

1 个回复
最合适的回答,由SO网友:momn99 整理而成

我找到了答案。

从本质上讲,我有一个无限循环,一开始很令人困惑。这更有意义,因为我看到它从未在post数组的第一项之后进行迭代。

我在这里找到了答案:https://tommcfarlin.com/update-post-in-save-post-action/

问题是wp\\u update\\u post挂钩到save\\u post。。。所以每次我达到这个目标,它都会重新启动。为了解决这个问题,我将代码改为:

function officers_onto_board_page_save( $post_id ) {
    remove_action( \'save_post\', \'officers_onto_board_page_save\' );


    //DO STUFF


   add_action( \'save_post\', \'officers_onto_board_page_save\');
}
通过删除该函数,然后将其重新添加到save_post, 它按预期运行。

相关推荐

如何将Java脚本添加到Custom-Page.php模板?

如何将javascript添加到自定义页面。php模板?如何使从w3schools ajax教程获得的以下javascript在自定义页面上工作。php模板?任何帮助都将不胜感激。工作javascript包含在以下HTML中:<!DOCTYPE html> <html> <style> table,th,td { border : 1px solid black; border-collapse: collapse;&#x