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 获取私人帖子
如何在 iframe 中的 wordpress 管理帖子页面中拥有可排序的 UI?