如何在管理员帖子列表中添加发布/草稿按钮

时间:2018-06-25 作者:krk

我尝试在Wordpress管理帖子列表中添加发布/草稿按钮,但在特定情况下效果不佳。

Does Not Work

新建帖子->另存为草稿->使用Adomin帖子列表中的新建按钮发布

Does Work

新建帖子->发布->草稿->使用Adomin帖子列表中的新建按钮发布

提前感谢大家的帮助或任何其他方式:D

参考号:Publish pending article from front end with a button? (这不起作用)

下面是函数。PHP代码

function show_publish_button($post_id){
$pub_form = <<<EOF
        <form name="make_it_publish" method="post" action="">
                <input type="hidden" name="pid" id="pid" value="{$post_id}">
                <input type="hidden" name="mi_publish" id="mi_publish" value="mi_publish">
                <input type="submit" name="submit" id="submit" value="publish">
         </form>
EOF;
echo $pub_form;
}

function show_draft_button($post_id){
$pri_form = <<<EOF
        <form name="make_it_draft" method="post" action="">
                <input type="hidden" name="pid" id="pid" value="{$post_id}">
                <input type="hidden" name="mi_draft" id="mi_draft" value="mi_draft">
                <input type="submit" name="submit" id="submit" value="draft">
         </form>
EOF;
echo $pri_form;
}

function change_post_status($post_id,$status){

    $time = current_time(\'mysql\');
    wp_update_post(
        array(
           \'ID\'                         =>  $post_id,
           \'post_status\'        =>  $status,
           \'post_name\'          =>  $post_id,
           \'post_date_gmt\'  =>  get_gmt_from_date( $time )
        )
    );
}

add_action( \'admin_init\', function() {
    if (isset($_POST[\'mi_publish\']) && $_POST[\'mi_publish\'] == \'mi_publish\'){
        if (isset($_POST[\'pid\']) && !empty($_POST[\'pid\'])){
            change_post_status((int)$_POST[\'pid\'],\'publish\');
        }
    }
    if (isset($_POST[\'mi_draft\']) && $_POST[\'mi_draft\'] == \'mi_draft\'){
        if (isset($_POST[\'pid\']) && !empty($_POST[\'pid\'])){
            change_post_status((int)$_POST[\'pid\'],\'draft\');
        }
    }
});


function manage_posts_columns($columns) {
    $columns[\'publish\'] = "publish";
    $columns[\'draft\'] = "draft";
    return $columns;
}

function add_column($column_name, $post_id) {

    if($column_name == \'publish\'){
        $pub = "publish";
    }
    if($column_name == \'draft\'){
        $pri = "draft";
    }


    if ( isset($pub) && $pub ){
        show_publish_button($post_id);
    } else if ( isset($pri) && $pri ){
        show_draft_button($post_id);
    } else {
        echo __(\'None\');
    }
}
add_filter( \'manage_posts_columns\', \'manage_posts_columns\' );
add_action( \'manage_posts_custom_column\', \'add_column\', 10, 2 );

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

原因是nest 表单标签。

管理员帖子列表是一个巨大的表单,我添加了表单标签。这就是为什么它不起作用。

简单的方法是使用ajax和wp\\u update\\u post。

结束

相关推荐

对WooCommerce的Functions.php更改不起作用

我正在尝试将其添加到函数中。php。在我的另一个站点上的测试实验室中,它可以很好地添加测试信息。但在这个网站上,我试图把它添加到什么都没有发生的情况下。该网站正在使用最新的woocommerce运行一个建筑节俭主题。有什么想法吗?我基本上只是想在每个产品页面上添加一行类似于免责声明但无法添加的文本。add_action(\'woocommerce_before_add_to_cart_form\',\'print_something_below_short_description\');