仅向帖子作者显示侧边栏

时间:2020-09-06 作者:orange-oc

我试图仅当查看帖子的用户是该帖子的作者时才显示侧边栏。因此,任何其他查看帖子的人,如果他们不是作者,那么他们就看不到提要栏。

因此,如果;“约翰”;写了“A帖”,但他没有写“B帖”,然后;“约翰”;在查看帖子A时可以看到侧边栏,但在查看“帖子B”时无法看到侧边栏。

我已经尝试了许多不同的方法,但似乎没有任何效果。要么侧边栏对每个人都消失了,包括作者,要么对每个人都可见。

此外,我正在使用一种自定义的帖子类型,称为“campaign”,不确定这是不是不起作用的原因。

    $author_id = get_post_field (\'post_author\', $post_id);
    $current_user = wp_get_current_user();

function showSidebarWhenNeeded()
{
    
if ( $current_user->ID !== $author_id ) {
    
echo \'<style>.widget-area{ display: none !important;}</style>\';
    
}
}
showSidebarWhenNeeded();

1 个回复
SO网友:Cyclonecode

这不起作用的原因是,您试图使用未定义的变量,这些变量在函数外部声明,因此,如果不在它们前面加上global 关键字。

如果你有error_reporting 启用后,您将看到如下警告:

注意:未定义变量:current\\u user in/。。。在线11

注意:未定义变量:author\\u id in/。。。在线11

通过设置启用调试WP_DEBUGtrue 在您的wp-config.php 文件

添加global 关键字将使变量可以从函数中访问:

function showSidebarWhenNeeded()
{
  global $current_user;
  global $author_id;
  if ( $current_user->ID !== $author_id ) {
    // ...
  }
}
相反,我会在函数中设置变量:

function showSidebarWhenNeeded($post_id)
{
  $author_id = get_post_field ( \'post_author\', $post_id );
  $current_user = wp_get_current_user();
  if ( $current_user->ID !== $author_id ) {
    // ...
  }
}