重写WordPress的核心功能:更改私人帖子

时间:2014-08-22 作者:GauteR

我正在尝试重写WordPress的一些核心功能。我正在使用WordPress 3.9.2,我认为自己是WordPress编程的中间人。

这张图片将解释我正在尝试做什么:

Explanatory image

目前,当一个帖子设置为“私有”时,它将隐藏该帖子,只有通过其链接和特殊特权用户才能直接访问该帖子。这不是我的客户想要的,他们想要的是一个“成员”(挪威语:Medlemmer)功能,该选项将使帖子只对特定的访问角色可见。因此,对于匿名用户,您会看到一些帖子,但当以成员身份登录时,您会看到所有这些帖子。

我还试图删除“密码保护”选项,因为这不适用于我客户的网站,但这不是优先事项。

所以我的问题是:Any ideas on what I will have to do to change this from a plugin?我目前的想法是过滤器挂钩。

感谢您的帮助。

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

首先,我必须说,私人帖子已经满足了你的需求,因为具有适当功能的登录用户将在主页、档案、搜索等中看到帖子。

适当的能力是\'read_private_posts\'.

默认情况下,此cap分配给管理员和编辑器。因此,您的“成员”用户应该拥有这两个角色中的一个,或者您可以将该功能分配给不同的角色。

实际上,您可以使用将其添加到标准角色中add_cap() 也可以注册自定义角色(请参见here) 并将要分配给成员的功能分配给该角色。

也就是说,要自定义metabox在post admin页面中的显示方式(删除密码保护选项,重命名“Private”选项…)最有力的方法是

创建一个输出自定义元数据库的函数。创建一个新函数,将其命名为custom_post_submit_meta_box(), 从核心复制内容post_submit_meta_box() 并修改所需内容

add_action( \'dbx_post_advanced\', function( $post ) {

  // only for \'post\' post type
  if ( $post->post_type !== \'post\' ) return;
  // remove the standard
  remove_meta_box( \'submitdiv\', \'post\', \'side\' );
  // add the custom
  add_meta_box(
    \'custom_submitdiv\',
    __( \'Publish\' ),
    \'custom_post_submit_meta_box\', // the name of your custom function
    \'post\',
    \'side\',
    \'core\'
  );

});

结束

相关推荐

WordPress URLs without posts

我们正在开发基于WordPress的更大系统,但WordPress只用于“静态”内容,系统的主要部分应该是使用外部API和显示数据。我的观点是:我是否能够告诉URL重写不要对某些URL使用WordPress内部系统,而使用其他系统?E、 g。mysite.com/news/news-title 会显示帖子,但是mysite.com/customcontent/anotherlink 将调用某种机制从API加载数据并显示它。我不知道WordPress是否能做到这一点。。谢谢你的观点。