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

WordPress短码[wpusers]的Department属性不生效无法查询用户是什么原因

问题原因

WordPress 处理短码传入的属性时,会默认将所有属性名转为小写,你在短码中写的Department="IEDK",实际传入短码函数的$atts数组中,对应的键是小写的department。
而你在shortcode_atts中定义的默认属性键是大写开头的Department,两者键名不匹配,导致最终提取到的$Department变量为空,自然查询不到符合条件的用户。硬编码时值不为空,所以查询可以正常执行。

解决方法

你只需要统一属性键的大小写即可,推荐将shortcode_atts中定义的键改为全小写,和WordPress处理后的属性键匹配:

function wpusers_shortcode( $atts ) {
    // 把键改为小写的department
    $atts = shortcode_atts( array(
        'department' => '',
    ), $atts );
    // 不推荐用extract,直接取值更安全,避免变量冲突
    $department = $atts['department'];

    $args = array(  
        'meta_query' => array(
            'relation' => 'AND',
            array(
                'key' => 'Department',
                'value' => $department,
            ),
        )
    );

    $user_query = new WP_User_Query( $args );

    if ( ! empty( $user_query->get_results() ) ) {
        foreach ( $user_query->get_results() as $user ) {
            echo '<p>' . $user->display_name . '</p>';
        }
    } else {
        echo 'No users found.';
    }
}
add_shortcode( 'wpusers', 'wpusers_shortcode' );

补充建议

如果后续再遇到类似短码属性不生效的问题,可以临时在短码函数开头添加调试代码var_dump($atts);,打印出实际接收到的属性数组,就能快速定位键名不匹配的问题。


内容的提问来源于stack exchange,提问作者Ramon Viento

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 06:18:03