如何将“发布”链接添加到快速操作

时间:2013-05-12 作者:MegaHit

我正在尝试通过快速操作添加“发布”链接:

enter image description here

但我不确定该如何实施。

以下是我目前掌握的情况:

add_filter(\'post_row_actions\', function ( $actions )
{
    global $post;

    // If the post hasn\'t been published yet
    if ( get_post_status($post) != \'publish\' )
    {
        $nonce = wp_create_nonce(\'quick-publish-action\');

        $link = get_admin_url(\'path to where\') . "?id={$post->id}&_wpnonce=$nonce";

        $actions[\'publish\'] = "<a href=\\"$link\\">Publish</a>";
    }

    return $actions;
});
如你所见,我不知道在中链接到哪里get_admin_url. 我想我应该使用wp_publish_post(), 但我不知道该把代码放在哪里,以及如何链接到它。

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

在不使用Ajax(如快速编辑)的情况下admin_url 应该是edit.php

请注意:

过滤器post_row_actions 接受两个参数,第二个是$post, 因此,全球是没有必要的id 在本例中,作为查询参数,最好使用自定义名称update_id. get_admin_url 并正常使用admin_url 为了这个

add_filter( \'post_row_actions\', function ( $actions, $post )
{
    if ( get_post_status( $post ) != \'publish\' )
    {
        $nonce = wp_create_nonce( \'quick-publish-action\' ); 
        $link = admin_url( "edit.php?update_id={$post->ID}&_wpnonce=$nonce" );
        $actions[\'publish\'] = "<a href=\'$link\'>Publish</a>";
    }   
    return $actions;
},
10, 2 );
然后,我们需要尽早采取行动,load-edit.php, 并执行wp_update_post 如果nonce和update_id 是否正常:

add_action( \'load-edit.php\', function() 
{
    $nonce = isset( $_REQUEST[\'_wpnonce\'] ) ? $_REQUEST[\'_wpnonce\'] : null;
    if ( wp_verify_nonce( $nonce, \'quick-publish-action\' ) && isset( $_REQUEST[\'update_id\'] ) )
    {
        $my_post = array();
        $my_post[\'ID\'] = $_REQUEST[\'update_id\'];
        $my_post[\'post_status\'] = \'publish\';
        wp_update_post( $my_post );
    }
});

结束

相关推荐

NEXT_POSTS_LINK返回第一页的相同内容

分页似乎工作正常。。。我有21个帖子。。。它将转到3页。。。然而每页显示10篇帖子,内容与第一页相同。。。。<?php $temp = $wp_query; $wp_query= null; $args = array( \'post_type\' => \'a-reports\', \'post_status\' => \'publish\' ); $wp_query = new WP_Query( $a