创建快捷代码以列出具有特定元键值的用户

时间:2017-11-10 作者:730wavy

我有一个函数,用于列出特定角色中与特定元键值匹配的用户。当我直接在页面上使用它时,它会起作用---

<?php 
$bmail = $current_user->user_email;
   $user_query = new WP_User_Query( array( \'meta_key\' => \'broker_email\', \'meta_value\' => $bmail,  \'fields\' => \'all\'  ) );
   $users = $user_query->get_results();

  if (!empty($users)) {
    echo \'<ul>\';
    foreach ($users as $user){
        echo \'<li>\' . $user->display_name . \'</li>\';
    }
    echo \'</ul>\';
  } else {
    echo \'No users found\';
  };
?>
但是当我尝试创建一个快捷代码时--

function thebroker_agents() {
  global $current_user;
$bmail = $current_user->user_email;
   $user_query = new WP_User_Query( array( \'meta_key\' => \'broker_email\', \'meta_value\' => $bmail,  \'fields\' => \'all\'  ) );
   $users = $user_query->get_results();
  if (!empty($users)) {
    echo \'<ul>\';
    foreach ($users as $user){
        echo \'<li>\' . $user->display_name . \'</li>\';
    }
    echo \'</ul>\';
  } else {
    echo \'No users found\';
  }
// Adds the above function as as shortcode
add_shortcode( \'your_agents\', \'thebroker_agents\' );
像这样在同一页上打电话--

<?php echo do_shortcode(\'[your_agents]\'); ?>
除了回显文本-“[您的\\u代理]”,它什么都不做

我的shortcode函数有什么错?

1 个回复
最合适的回答,由SO网友:rudtek 整理而成

尝试以下操作:

function thebroker_agents() {
    global $current_user;
    $bmail = $current_user->user_email;
    $user_query = new WP_User_Query( array( \'meta_key\' => \'broker_email\', \'meta_value\' => $bmail,  \'fields\' => \'all\'  ) );
    $users = $user_query->get_results();
    if (!empty($users)) {
        $results = \'<ul>\';
        foreach ($users as $user){
            $results = \'<li>\' . $user->display_name . \'</li>\';
        }
        $results =  \'</ul>\';
    } else {
        $results =  \'No users found\';
    }
    wp_reset_postdata();
    return $results;
}
// Adds the above function as as shortcode
add_shortcode( \'your_agents\', \'thebroker_agents\' );
您缺少最后一个括号。此外,我对代码进行了一些修改,从回声改为返回结果。我还重置了你的帖子数据。不知道为什么在代码中不使用while语句,但没有使用它。

因为您是在php中调用函数,所以不需要很短的代码。您可以这样称呼它:

echo thebroker_agents();
然而,您的echo-do短代码仍然可以工作。

结束

相关推荐

从具有序列化值的元键获取GET_USERS

我想做一个get_users() 当元键有两个值时。例如,在db中,它如下所示:a:2:{i:0;s:10:\"31.08.2017\";i:1;s:9:\"username\";} 当我进行查询时:$claimed_users = get_users(\'meta_key=username\'); 并尝试输出它:print_r($claimed_users);它刚刚回来Array().我做错了什么?有没有更好的方法?