仅限作者使用的小部件中的“is_Author()”逻辑

时间:2015-02-19 作者:Steve Kim

所以,我有一个小部件,我只想把它显示给页面作者。

我使用了以下逻辑:is\\u author()

然而,它似乎不起作用(它显示非作者)

我是否使用了这种逻辑?

有什么建议吗?

非常感谢。

2 个回复
最合适的回答,由SO网友:Sean Grant 整理而成

is\\u author()仅用于存档页。抄本引述:

is\\u author()检查是否显示作者存档页

因此,查看单个帖子或页面并不能从is\\u author()获得一个TRUE。

我想你会想要这样的东西:

global $post,$current_user; // get the global variables to check
get_currentuserinfo();  // get current user info
// Now check if the author of this post is the same as the current logged in user
if ($post->post_author == $current_user->ID) {
   // do code here
}
我希望这能有所帮助。:)

编辑#1:缩短代码版本。

// Check if the author of this post is the same as the current logged in user
if ( $post->post_author == get_current_user_id() ) {
   // do code here
}

SO网友:mjakic

您可以使用:

$obj = get_queried_object();
$user_id = get_current_user_id();

// check if page\'s post author is same as logged in user
if (isset($obj->post_author) && $obj->post_author == $user_id) {
    // ... do your stuff here
}
使用get_queried_object 函数获取当前页的对象。当请求页面应为“page”类型时,您将获得当前页面的WP\\u Post对象(Post\\u type=“page”)。

这个get_current_user_id 这是不言而喻的。

因此,如果两者匹配,您将得到当前用户的代码,该用户是页面的创建者。

您还可以检查查询的对象是否为“页面”:

if ($obj instanceof WP_Post && $obj->post_type == \'page\') {
    // ...
}

结束

相关推荐

widgets in contacts only

我的顶部菜单中列出了几页。这些是:联系人、我的帐户和消息。我在admin的“Pages Sidebar”选项卡中添加了一个地图。但它似乎将地图添加到上面列出的所有3个页面中,但我只希望它出现在联系人页面上,而不是其他2个页面上,因为在其他2个页面中,我希望看到其他内容(可能是针对会员的广告)。我该怎么做?谢谢你的帮助。