仅向作者显示他们的自定义帖子类型

时间:2013-08-16 作者:Aaron

我有一个网站,有3种不同的自定义帖子类型(列表、联系人、事件)和大约1600个“作者”。我想做的只是在后台显示作者的帖子。所以当authorA登录并单击“列表”时,他们只会看到自己的帖子。

我在函数中运行了这段代码。php来控制第一个post类型,但不确定如何控制另外两个。我看到的问题是,当authorA单击“事件”时,他们在“列表”中的帖子就会显示出来。

    function __set_all_posts_for_author( &$query )
{
    if ( $query->is_author )
        $query->set( \'post_type\', \'listings\' );
    remove_action( \'pre_get_posts\', \'__set_all_posts_for_author\' ); // run once!
}
add_action( \'pre_get_posts\', \'__set_all_posts_for_author\' );
所以,我想我只需要将“列表”更改为所有三种显示的帖子类型,但我不确定如何。。。。有什么想法吗?

2 个回复
SO网友:gmazzap

正如@s\\u ha\\u dum在评论中所说,您的描述和代码似乎有所不同。

如果我理解描述,那么执行您想要的操作的代码是:

function __set_all_posts_for_author( $query ) {
  if ( is_admin() && is_post_type_archive( array(\'listings\', \'contacts\', \'events\') ) ) {
    $current_user = wp_get_current_user();
    $query->set( \'author\', $current_user->ID );
  }
}
add_action( \'pre_get_posts\', \'__set_all_posts_for_author\' );
使用上述代码,每次登录后端的用户需要CPT“列表”、“联系人”和“事件”的项目列表时,他/她将只看到自己创建的帖子。

SO网友:John

你可以创建一个作者。然后抓取作者及其帖子。

<?php
$curauth = (isset($_GET[\'author_name\'])) ? get_user_by(\'slug\', $author_name) : get_userdata(intval($author));
query_posts( array(
        \'post_type\' => array(\'post\',\'custom_post_type\'),
        \'author\' => $author,
        \'posts_per_page\' => -1 )
    );
?>
将custom\\u post\\u type替换为您的CPT名称。在post\\u类型数组中使用您拥有/需要的尽可能多的值。

结束

相关推荐

Admin only menu/page

如果只有管理员登录,是否可以显示菜单项)对于任何其他用户,该菜单项不会出现。例如:如果有一些页面具有短代码或其他功能,例如显示如何构建切换等,但只希望管理员能够看到它们。这些页面通常带有预构建的主题,并向管理员展示如何在站点中构建页面。通过隐藏菜单项,可以对用户“隐藏”一系列页面,但允许管理员查看这些页面,以便能够构建页面,而无需将其完全从网站中删除:P有意义吗?