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
相关产品推荐
相关产品推荐

