从短码中排除类别

时间:2016-12-29 作者:sot

我有以下代码,我正在尝试排除特定类别id ex-144

function product_count_shortcode( ) {
    $count_posts = wp_count_posts( \'product\' );
    return $count_posts->publish;
}
add_shortcode( \'product_count\', \'product_count_shortcode\' );
如何排除一个类别?

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

我不知道有什么直接的方法可以做到这一点,你应该可以使用get_term 然后从总数中减去。

function product_count_shortcode( $atts ) {

    $data = shortcode_atts( array(
        \'cat_id\'    => 144,
        \'taxonomy\'  => \'category\'
    ), $atts );

    $category = get_term( $data[\'cat_id\'], $data[\'taxonomy\'] );
    $count = $category->count;
    $count_posts = wp_count_posts( \'product\' );
    return (int)$count_posts->publish - (int)$count;
}
add_shortcode( \'product_count\', \'product_count_shortcode\' );
发件人iguanarama 答复:

您还可以使用WP_Query

$myQuery = new WP_Query ([
    \'post_type\' => \'product\',
    \'cat\' => \'-144\',
    \'post_status\' => \'publish\'
]);
$count = ($myQuery ? $myQuery->found_posts : 0);

SO网友:iguanarama

您可以使用“-”为要排除的类别运行新的WP\\U查询:

$myQuery = new WP_Query ([
    \'post_type\' => \'product\',
    \'cat\' => \'-144\',
    \'post_status\' => \'publish\'
]);
$count = ($myQuery ? $myQuery->found_posts : 0);

相关推荐

Execute shortcodes in PHP

我在帖子编辑器中添加了一个地理位置快捷码,可以根据用户的位置显示不同的信息,将其放在帖子页面的内容中,效果非常好。如何在主题的PHP文件中执行此短代码[地理位置][地理位置]?我正在使用免费修改Wordpress主题,我想添加一个新的<span>[geolocation][/geolocation]Information text content</span> 但在主题的内部。php文件,我如何才能做到这一点?如果我直接加上<span>[geolocation][/ge