Wordpress 拥有私人/公共帖子的安全方式

Posted

技术标签:

【中文标题】Wordpress 拥有私人/公共帖子的安全方式【英文标题】:Wordpress secure way to have Private/Public posts 【发布时间】:2013-05-03 08:37:30 【问题描述】:

我已经问了几个问题试图解决这个简单的问题,但似乎没有任何效果。

发布私人/公开帖子的推荐方式是什么?我希望有一个网站,如果作者/编辑/管理员登录每个私人帖子并且公共帖子是可查看/可搜索的。如果用户未登录,则仅公开帖子可见。

我已经考虑/尝试了多种方法。一种简单的方法,我使用 WP_Query 在登录/注销时包含/排除所有带有自定义字段“私人”的帖子。

虽然这很好用,但我有两个问题,它的安全性如何?并且当 Wordpress 已经具有私人帖子功能时,它需要一个自定义字段。

我尝试过的另一种方法是使用 Wordpress 内置的私人帖子功能,但我无法让私人帖子显示在前端。它们显示在允许用户的编辑屏幕和管理员的循环(前端)中,但不显示编辑或作者......

使用 wordpress 内置函数是我的首选方法,但无法使其正常工作。

有什么建议或帮助吗?一定有人在不需要自定义字段的情况下做到了这一点?

谢谢

【问题讨论】:

【参考方案1】:

您不需要使用元字段来获取私人帖子,它在 wp 查询 post_status 参数中可用。

$args = array( 'post_status' => array( 'publish' ) ); // regular users
if ( is_user_logged_in() ) 
  // signed in users
  $args['post_status'][] = 'private';


$query = new WP_Query( $args);

【讨论】:

好的,是的,这似乎也很好用,谢谢。你知道有没有办法让这个网站更广泛?而不是将其添加到每个查询中?如果这有意义的话。为输入欢呼 我不知道是否可以以干净的方式修改WP Query默认值,也许你可以在这里问wordpress.stackexchange.com 好的,再次感谢您的帮助。嗯,也许我可以将它添加到 function.php【参考方案2】:

我认为最适合您的情况是使用WordPress capabilities。如果登录,编辑者已经能够在前端查看私人帖子/页面(因为他们具有read_private_posts 功能)。

这是一个示例,说明如何使 author 用户角色可以查看私人帖子/页面。

function so0805_init_theme_add_capabilities()
    /* allow authors to view private posts and pages */
    $role_author = get_role('author');
    $role_author->add_cap('read_private_pages');
    $role_author->add_cap('read_private_posts');


add_action('init', 'so0805_init_theme_add_capabilities');

将此代码粘贴到您主题的functions.php 中。

【讨论】:

这显示当前作者撰写的私人帖子,并允许作者在编辑屏幕和single.php中查看私人帖子,但不会显示在首页循环中。我错过了什么?谢谢

以上是关于Wordpress 拥有私人/公共帖子的安全方式的主要内容,如果未能解决你的问题,请参考以下文章

React Native - 如何使用 JWT 令牌从 WordPress REST API 获取私人帖子

Django私人帖子和公开帖子的例子?

如何在 iframe 中的 wordpress 管理帖子页面中拥有可排序的 UI?

WordPress相关帖子w/拇指

拥有一个与自定义帖子类型“front”slug 标题相同的 WordPress 页面

将来自两个不同 wordpress 的帖子合并到一个按日期排序的帖子页面