You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress双分类交集文章计数短代码插件修复咨询

修复方案

原代码存在以下核心问题导致功能异常:

  • 插件头注释不符合WordPress规范,缺少起始注释标记,插件无法被系统正常识别加载
  • 未解析短代码传入的category参数,硬编码分类ID和分类法,无法通过短代码动态传参
  • 分类匹配字段配置错误:短代码传入的是分类别名(slug),原代码配置为按term_taxonomy_id匹配,无法命中对应分类
  • 取数逻辑错误:$query->post_count仅返回当前分页下的文章数,要获取全量匹配的文章总数需调用$query->found_posts
  • 短代码直接echo输出内容,会导致显示位置错乱,WordPress短代码要求返回字符串而非直接输出
  • 查询未做性能优化,默认拉取全量文章对象,资源消耗高

修复后完整代码
<?php
/*
Plugin Name: Count Posts
Plugin URI: http://a4jp.com/plugins/
Description: 新增短代码统计同时归属两个指定分类的文章总数量
Version: 1.0 fixed
License: GPLv2 
*/

function cat_count_multi( $atts ) {
    // 解析短代码入参,设置默认值
    $atts = shortcode_atts( array(
        'category' => '',
        // 默认统计系统自带文章分类,若为自定义分类法可修改此处值,也可通过短代码传参覆盖
        'taxonomy' => 'category',
    ), $atts );

    // 未传入分类参数直接返回0
    if ( empty( $atts['category'] ) ) {
        return '0';
    }

    // 按+号拆分两个分类别名
    $categories = explode( '+', $atts['category'] );
    // 分类数量不符合要求直接返回0
    if ( count( $categories ) !== 2 ) {
        return '0';
    }

    // 构建查询参数
    $args = array(
        'post_type' => 'post',
        'post_status' => 'publish', // 仅统计已发布文章
        'nopaging' => true, // 关闭分页干扰
        'fields' => 'ids', // 仅查询文章ID,大幅降低查询性能消耗
        'tax_query' => array(
            'relation' => 'AND', // 要求文章同时归属两个分类
            array(
                'taxonomy' => $atts['taxonomy'],
                'field' => 'slug', // 按分类别名匹配
                'terms' => trim( $categories[0] ),
            ),
            array(
                'taxonomy' => $atts['taxonomy'],
                'field' => 'slug',
                'terms' => trim( $categories[1] ),
            ),
        ),
    );

    $query = new WP_Query( $args );
    // 重置查询避免污染全局主循环
    wp_reset_postdata();

    // 返回符合条件的文章总数量,逻辑与$wp_query->found_posts完全一致
    return (string)$query->found_posts;
}
add_shortcode( 'cat_count_multi', 'cat_count_multi' );

使用说明
  • 统计默认文章分类交集数量,直接使用你预设的短代码格式即可:[cat_count_multi category="jp-events+jp-1月"]
  • 若需统计自定义分类法(比如原代码中写的translates_category),可直接修改代码中taxonomy对应的默认值,也可在短代码中动态传参:[cat_count_multi category="分类别名1+分类别名2" taxonomy="translates_category"]
  • 统计结果不受站点分页设置影响,仅计算已发布的公开文章数量。

内容的提问来源于stack exchange,提问作者Glen Charles Rowell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:12:29