【问题标题】:Show calendar to specific users based on custom field根据自定义字段向特定用户显示日历
【发布时间】:2014-10-22 15:12:57
【问题描述】:

我在一个私人网站上使用来自http://tri.be/ 的日历插件(它就像一个内部网......)。

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

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

类似:

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

当我在 ACF 框中只有一个用户名时,这当然是有效的

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

如果当前用户用户名在值列表“必须加入”中,这是我需要显示的代码部分

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

在另一个论坛上,一个人告诉我使用这个 sn-p :

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;

但它不起作用..

【问题讨论】:

  • var_dump( get_field('mustjoin') ); 有什么用?
  • 您好,谢谢您的回复。这是我通过转储获得的:string(21) "User1 User2 User3" 谢谢。
  • 编辑:它是字符串(17)“User1 User2 User3”,而不是 21。

标签: arrays calendar wordpress advanced-custom-fields


【解决方案1】:

感谢您的评论。这是代码,它的工作率为 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 } ?>

但我需要问你这段代码是否“干净”,或者我是否可以让它更好/更快。

因为当我打开日历页面时,我什么都看不到。刷新页面后,所有事件(我应该加入的地方)都会出现。

我该如何解决? (我尝试了不同的计算机/浏览器,没有变化..) 谢谢。


感谢另一个网站上的另一个人,终于可以 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; ?>

感谢您的正确建议和帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 2019-05-02
    相关资源
    最近更新 更多