根据自定义字段向特定用户显示日历

时间:2014-08-28 16:58:53

标签: arrays calendar wordpress-plugin advanced-custom-fields

我在worpress网站上使用http://tri.be/中的日历插件获取私人网站(就像内联网......)。

在这个日历上,我放了所有计划的会议,但我希望当前登录的用户只能看到他/她应该加入的事件。

我认为我可以创建一个自定义字段,例如“mustjoin”,并将注册用户名列表作为值。 然后检查页面。 如果当前登录的用户名在该列表中,他/她可以在日历上看到该事件..否则不会。

类似的东西:

if ( $current_user->user_login == get_field(mustjoin)) { ?>
//CODE IF OK
<?php } else { ?>
//CODE ELSE<?php } ?>

当我在ACF框中只有一个用户名时,这当然有效,只要我输入多个用户名..它不再工作,因为它不是一个数组..

如何使用ACF创建数组?什么功能以及如何查询该阵列?

这是我需要显示的代码的一部分,如果当前用户的用户名在值列表'mustjoin'中

<?php while ($day['events']->have_posts()) : $day['events']->the_post() ?>
<?php tribe_get_template_part('month/single', 'event') ?>
<?php endwhile; ?>

在另一个论坛上,一个人告诉我使用这个片段:

function searchForName($name, $array) {
   foreach ($array as $key => $val) {
       if ($val['nickname'] === $name) {
           return true;
       }
   }
   return null;
}
$current_user = wp_get_current_user();
if(searchForName($current_user->user_login,get_field('mustjoin'))):
    //CODE GOES HERE
endif;

但它不起作用..

1 个答案:

答案 0 :(得分:0)

感谢您的评论。这是代码,它的工作率为99%。

<?php $current_user = wp_get_current_user(); ?>
<?php global $user_login;
      get_currentuserinfo(); ?>
<?php $lookforuser = get_field('mustjoin') ?>
<?php if (strpos($lookforuser, $user_login) !== false) { ?>
    <?php while ($day['events']->have_posts()) : $day['events']->the_post() ?>
    <?php tribe_get_template_part('month/single', 'event') ?>
    <?php endwhile; ?>
<?php } ?>

但我需要问你这个代码是否是&#34;清洁&#34;或者如果我能让它更好/更快。

因为当我打开日历页面时,我看不到任何内容..一旦刷新页面,就会出现所有事件(我应该加入的地方)。

我该如何解决? (我试过不同的电脑/浏览器,没有变化..) 谢谢。


感谢另一个网站上的另一个人,最后它以100%的速度运行! 我只需要在事件循环之前检查用户:

<?php $current_user = wp_get_current_user(); ?>
<?php global $user_login;
      get_currentuserinfo(); ?>
<?php while ($day['events']->have_posts()) : $day['events']->the_post(); ?>
   <?php $lookforuser = get_field('mustjoin'); ?>
   <?php if (strpos($lookforuser, $user_login) !== false) 
         tribe_get_template_part('month/single', 'event'); ?>
<?php endwhile; ?>

无论如何,谢谢您的正确建议和帮助。