在后端/前端显示待发帖子数量

时间:2013-09-27 作者:Christine Cooper

我想显示我的网站的待处理帖子总数。我的站点是单个站点,而不是网络。我希望在后端(一个自定义插件页面)和前端响应这一计数。

enter image description here

我该怎么做?

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

轻松的本机SQL查询:

global $wpdb;

$sql = <<<SQL
SELECT post_status, COUNT( * ) AS count
    FROM {$wpdb->posts}
WHERE post_status = \'pending\'
SQL;

$result = $wpdb->get_results( $sql );
结果会是

+ ----------- + ----- +
| post_status | count |
+ ----------- + ----- +
|   pending   |  158  |
+ ----------- + ----- +
因此,您可以使用$result->count.

is_user_logged_in() 检查用户是否已登录。

edit_post_link() 你可以直接链接到这些帖子(在你单独查询之后)。下面将链接到按帖子状态筛选的帖子管理表pending:

printf( \'<a href="%s">Pending Posts</a>\', admin_url( \'edit.php?post_status=pending\' ) );
插件作为插件:

<?php
/**
 * Plugin Name: (#115946) Post Count by status
 * Plugin URI:  http://wordpress.stackexchange.com/questions/115946
 * Author:      Franz Josef Kaiser <[email protected]>
 * Author URI:  http://unserkaiser.com
 */

function wpse115946PostCountByStatus( $status )
{
    global $wpdb;

$sql = <<<SQL
SELECT post_status, COUNT( * ) AS count
    FROM {$wpdb->posts}
WHERE post_status = %s
SQL;

    $result = array_shift( $wpdb->get_results( $wpdb->prepare( $sql, $status ) ) );

    $title = sprintf( _e( \'%s %s posts\', ucwords( $status ), $result->count ) );
    return printf(
        \'<a href="%1$s" title="%2$s">%2$s</a>\',
        admin_url( \'edit.php?post_status=pending\' ),
        $title
    );
}

结束