当参数不包括在快捷代码中时,我如何默认为所有WordPress角色?

时间:2019-05-08 作者:Michael

我试图在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);
} 

1 个回复
最合适的回答,由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() 一旦