Wordpress批量发布元更新

时间:2015-12-01 15:49:09

标签: php wordpress

我正在尝试添加通过Wordpress的批量发布编辑菜单更新元值的功能。我让它在一个帖子上工作,但我无法弄清楚为什么它不适用于批量。

// Add our text to the quick & bulk edit box
add_action('quick_edit_custom_box', 'on_quick_edit_custom_box', 10, 2);
add_action('bulk_edit_custom_box', 'on_quick_edit_custom_box', 10, 2);
function on_quick_edit_custom_box($column_name, $post_type) {
    global $post;
    $postMeta = get_post_meta( $post->ID, 'wpsl_locatorID', true ); 
    if ('wpsl_locatorID' == $column_name && get_post_type() == 'location' ) {
        echo  "<fieldset class=\"inline-edit-col-right\" style=\"margin-top: 0;\">";
        echo    "<div class=\"inline-edit-col\">";
        echo        "<div class=\"inline-edit-group\">";
        echo            "<label class=\"alignleft\">";
        echo                "<span class=\"title\" for=\"wpsl_locatorID\">Movie ID</span>";
        echo                "<input type=\"text\" name=\"wpsl_locatorID\" id=\"wpsl_locatorID\" value=\"{$postMeta}\" />";
        echo        "</label>";
        echo    "</div>";
        echo "</fieldset>";
    };
}

// Update the post meta
add_action( 'save_post', 'locationMetaUpdate', 10, 2 );
function locationMetaUpdate( $post_id ) {

    // Bail if we're doing an auto save
    if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;

    // if our nonce isn't there, or we can't verify it, bail
    // if un-commented than the value won't update at all. I'm guessing b/c of WP's ajax function vs. reloading the page.
    //if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;

    // if our current user can't edit this post, bail
    if ( ! current_user_can( 'edit_posts' ) ) return;

    // Make sure that it is set.
    if ( ! isset( $_POST['wpsl_locatorID'] ) ) {
        return;
    }

    // Sanitize user input.
    $my_data = sanitize_text_field( $_POST['wpsl_locatorID'] );

    // Update the meta field in the database.
    update_post_meta( $post_id, 'wpsl_locatorID', $my_data );

};

就像我上面所说,这适用于单个快速编辑,但不适用于批量编辑。我试图找到一个解决方案,但我确信这很简单,我很遗憾。

1 个答案:

答案 0 :(得分:1)

老实说,我不确定它为什么现在正在工作;但我所做的只是在WP&#39的save_post codex页面上压缩动作。

// Update the post meta
add_action( 'save_post', 'locationMetaUpdate', 10, 3 );
function locationMetaUpdate( $post_id, $post, $update ) {
        //print_r($_POST); die();

        // if our current user can't edit this post, bail
        if ( ! current_user_can( 'edit_posts' ) ) return;

        // Make sure that it is set.
        if ( isset( $_REQUEST['wpsl_locatorID'] ) ) {
            update_post_meta( $post_id, 'wpsl_locatorID', sanitize_text_field( $_REQUEST['wpsl_locatorID'] ) );
        }
}