我试图在WordPress中设置一个通用的快捷码,其中包含用户元键、元值和角色的参数,这些参数将计算包含特定值的概要文件的总数。到目前为止,我已通过以下代码和快捷码使其与单个角色协同工作:
[profilecounts metakey="Market" metavalue="149" userrole="franchisee_nm"]
add_shortcode(\'profilecounts\', \'profile_counts\');
function profile_counts($atts) {
$metakey = shortcode_atts( array(\'metakey\' => \'None\'), $atts );
$metavalue = shortcode_atts( array(\'metavalue\' => \'None\'), $atts );
$userrole = shortcode_atts( array(\'userrole\' => \'avail_roles\'), $atts );
return count( get_users(array(\'meta_key\' => $metakey[\'metakey\'], \'meta_value\' => $metavalue[\'metavalue\'], \'role\' => $userrole[\'userrole\'], ) ) );
}
我的问题是,我无法让它与多个角色一起工作和/或使其默认为所有角色。
我想使用以下内容来计算多个角色(或类似的角色):
[profilecounts metakey="Market" metavalue="149" userrole="franchisee_nm,franchisee_co"]
我想用以下公式来计算所有角色(或类似的角色):
[profilecounts metakey="Market" metavalue="149"]
编辑:好的,我想了一种方法,可以使用第二个短代码来扮演多个角色,但现在没有角色参数,但是如果有人可以帮助我做我正在尝试的事情,那就太好了。提前谢谢。
[profilecounts_conm metakey="Market" metavalue="149"]
add_shortcode(\'profilecounts_conm\', \'all_profile_counts\');
function all_profile_counts($atts) {
$metakey = shortcode_atts( array(\'metakey\' => \'None\'), $atts );
$metavalue = shortcode_atts( array(\'metavalue\' => \'None\'), $atts );
$franchisees_co = count( get_users(array(\'meta_key\' => $metakey[\'metakey\'], \'meta_value\' => $metavalue[\'metavalue\'], \'role\' => \'franchisee_nm\', ) ) );
$franchisees_nm = count( get_users(array(\'meta_key\' => $metakey[\'metakey\'], \'meta_value\' => $metavalue[\'metavalue\'], \'role\' => \'franchisee_co\', ) ) );
return round($franchisees_co+$franchisees_nm);
}
最合适的回答,由SO网友:Sally CJ 整理而成
尝试以下操作:
function profile_counts($atts) {
$atts = shortcode_atts( array(
\'metakey\' => \'\',
\'metavalue\' => \'\',
\'userrole\' => \'\',
), $atts );
$user_ids = get_users( array(
\'meta_key\' => $atts[\'metakey\'],
\'meta_value\' => $atts[\'metavalue\'],
\'role__in\' => wp_parse_list( $atts[\'userrole\'] ),
\'fields\' => \'ID\', // retrieve just the IDs
\'count_total\' => false, // no need for FOUND_ROWS()
) );
return count( $user_ids );
}
要点:
对于多个角色,您可以使用role__in
参数
你只需要打电话shortcode_atts()
一旦