我正在建立一个内部网,我希望用户能够通过电子邮件发送其他用户组。我已成功创建了一个函数,该函数根据元数据(作为参数传递)返回用户电子邮件列表。
但我需要帮助创建短代码。例如,一个短代码,输出所有用户的邮件列表,其中蓝色为最喜欢的颜色(来自用户注册表单的数据)。
我尝试过简单的add_shortcode('$tag , $func')
,但由于我需要传递不起作用的参数,所以只列出所有用户的电子邮件而不依赖于他们的元数据。
谁可以帮助我?
PS。我刚刚开始编码所以请对我好
function get_user_by_meta_data ($meta_key, $meta_value) {
$args = array(
'meta_key' => $meta_key,
'meta_value' => $meta_value
);
// The Query
$user_query = new WP_User_Query( $args );
// The Results
$users = $user_query->get_results();
$result = array();
// User Loop
foreach ( $users as $user ) {
$result[] = $user->user_email;
}
return "<span>" . implode( ', ', $result ) . "</span>";
}
您可以调整该代码,以便使用短代码。这是一个例子:
/**
* Register the [mailing_list] shortcode.
*
* Usage: [mailing_list meta_key='color' meta_value='blue']
*
* @author @cabrerahector
* @param array $atts Shortcode parameters
* @return string
*/
function wp44162_mailing_list_shortcode( $atts ) {
$args = shortcode_atts(array(
'meta_key' => '',
'meta_value' => '',
), $atts );
// The Query
$user_query = new WP_User_Query( $args );
// The Results
$users = $user_query->get_results();
$result = array();
// We have some users that match the conditions
if ( ! empty($users) ) {
// User Loop
foreach ( $users as $user ) {
$result[] = $user->user_email;
}
//return "<span>" . implode( ', ', $result ) . "</span>";
return "<a href=\"mailto:" . implode(',', $result) . "\">" . $args['meta_value'] . "</a>";
}
// No users that matched the criteria were found
return 'No users found.';
}
add_shortcode( 'mailing_list', 'wp44162_mailing_list_shortcode');
更新:
如果要查询多种颜色,则需要分别存储用户选择的每种颜色(有关详细信息,请参阅add_user_meta())。这样做可以让你这样做:
$args = shortcode_atts(array(
'meta_key' => '',
'meta_value' => '',
), $atts );
$query = array(
array(
'key' => $args['meta_key'],
'value' => explode(',', $args['meta_value']), // array of colors
'compare' => 'IN'
)
);
// The Query
$user_query = new WP_User_Query( $query );