WP列表表格自定义快速编辑框-POST元数据丢失和列在提交时更改

时间:2011-10-15 作者:Chris_O

我扩展了WP\\u List\\u Table类,创建了一个自定义的帖子排序表,以及一个带有自定义元框的快速编辑框。

元框填充并保存,但当我单击“提交”时,字段值消失,甚至没有包含在我的类中的默认值(cb、title、tags、cats等)被添加回保存的列。这会忽略页面上的其他列。刷新页面时,将返回保存的自定义字段值。

它与提交时一样,缺少$post\\u对象。

我正在使用一个被黑掉的get\\u inline\\u data函数,它在我的快速编辑表单中包含meta\\u值,而不是在我的类中调用get\\u inline\\u data。

元框的我的保存功能:

add_action( \'save_post\', \'save_inline_edit_meta\' );
function save_inline_edit_meta( $post_id  ) {
    global $pagenow;

    if ( $pagenow == \'admin.php\' ) {
     if ( isset( $_POST[ \'is_quickedit\' ] )  && isset( $_POST[ \'standinghead\' ] ) )
        update_post_meta( $post_id, \'_wnd_standing_head\', $_POST[ \'standinghead\' ] );

    if ( isset( $_POST[ \'is_quickedit\' ] )  && isset( $_POST[ \'headline\' ] ) )
        update_post_meta( $post_id, \'_wnd_alt_title\', $_POST[ \'headline\' ] );

    if ( isset( $_POST[ \'is_quickedit\' ] )  && isset( $_POST[ \'deck\' ] ) )
        update_post_meta( $post_id, \'_wnd_deck\', $_POST[ \'deck\' ] );
    }
  return $post_id;

}
我的Javascript保存功能:

save : function(id) {
        var params, fields, page = $(\'.post_status_page\').val() || \'\';

        if ( typeof(id) == \'object\' )
            id = this.getId(id);
        $(\'table.widefat .inline-edit-save .waiting\').show();
        params = {
            action: \'inline-save\',
            post_ID: id,
            post_type: \'post\',
            edit_date: \'true\',
            post_status: page
        };
        fields = $(\'#edit-\'+id+\' :input\').serialize();
        params = fields + \'&\' + $.param(params);

        $.post(\'admin-ajax.php\', params,
            function(r) {
                $(\'table.widefat .inline-edit-save .waiting\').hide();

                if (r) {
                    if ( -1 != r.indexOf(\'<tr\') ) {
                        $(inlineEditPost.what+id).remove();
                        $(\'#edit-\'+id).before(r).remove();
                        $(inlineEditPost.what+id).hide().fadeIn();
                    } else {
                        r = r.replace( /<.[^<>]*?>/g, \'\' );
                        $(\'#edit-\'+id+\' .inline-edit-save .error\').html(r).show();
                    }
                } else {
                    $(\'#edit-\'+id+\' .inline-edit-save .error\').html(inlineEditL10n.error).show();
                }
            }
        , \'html\');
        return false;
    },
enter image description here

1 个回复
SO网友:brasofilo

我只是在向默认帖子类型添加额外列时遇到了相同的错误。

令人不快的是$pagenow 检查
快速编辑使用admin-ajax.php 因此,完成后它不会呈现自定义列。

这不起作用:

if( \'edit.php\' == $pagenow && is_admin() )
{
    add_action( \'admin_init\', array( $this, \'init_id_column\' ), 999 );
    add_action( \'admin_init\', array( $this, \'init_thumb_column\' ), 999 );
}
但这确实:

if( 
    ( \'edit.php\' == $pagenow && is_admin() ) 
    or
    ( \'admin-ajax.php\' == $pagenow && \'inline-save\' == $_POST[\'action\'] && \'list\' == $_POST[\'post_view\'] )
)
{
    add_action( \'admin_init\', array( $this, \'init_id_column\' ), 999 );
    add_action( \'admin_init\', array( $this, \'init_thumb_column\' ), 999 );
}
我不确定这是不是最好的检查方法,不过。。。

相关的track ticket.

结束

相关推荐

AJAX日历导航返回-1

我想通过$month 和$year 单击上一个/下一个链接时通过AJAX获得的值,但我得到的只是-1 内容应该在哪里。我的JavaScript函数和AJAX调用位于自定义页面模板中,page-calendar.php 和functions.php, see all of the code here. 总之,下面是相关的AJAX脚本:在里面functions.php:/* draw_ajax_calendar($month, $year) function, see link above for that