盆盆罐罐

上海邦麦信息科技有限公司旗下子网站;POS系统、计算机技术资料搜集

使WordPress的搜索结果包含加密或私密文章

文章目录
[隐藏]

目前新版本的WordPress(我此刻使用的是v3.3.1),如果未登录,在搜索结果中是不包含加密文章的。根据网上查找的资料看,某个版本以前的WordPress搜索结果是包含加密文章的,后来某个版本之后,这个功能就去掉了,可能是基于隐私策略的考虑。

但我个人有不同的理解:

  • Private就是私人的意思,所以Private的文章仅限于作者,只有作者才能查看和搜索。
  • Password protected的文章仅仅是密码保护,应该让游客搜索到,任何人只要知道这篇文章的密码就可以查看,否则这个密码就失去它的意义了(Password protected的文章作者查看也是需要输入密码的)。

网上找了很久无果,今天尝试用英文搜索,终于在一个国外的Blog站点找到解决办法。

编辑当前主题下的functions.php文件,在<?php 与 ?>中间添加代码即可。

使未登录用户的搜索结果包含加密文章的代码

add_filter( 'posts_search', 'include_password_posts_in_search' );
function include_password_posts_in_search( $search ) {
    global $wpdb;
    if( !is_user_logged_in() ) {
        $pattern = " AND ({$wpdb->prefix}posts.post_password = '')";
        $search = str_replace( $pattern, '', $search );
    }
    return $search;
}

如果你使用了MobilePress插件,移动设备访问的时候,希望搜索结果也返回加密文章,如上同样添加代码到MobilePress下的主题文件的functions.php中即可。

使登录用户的搜索结果包含私密文章的代码

function include_password_posts_in_search( $query ) {
	if ( is_user_logged_in() )
		$query->set( 'post_status', array ( 'publish', 'private' ) );
	}
add_action( 'pre_get_posts', 'include_password_posts_in_search' );

以上两个代码只能使用其中一个,因为我不知道怎么才能将其合到一起同时达到两种效果。

参考链接

  1. Include password protected posts in search results
  2. Display private posts in the WP search results for logged in users

分类:Wordpress

标签:, ,

对本文发表评论





8 + 2 = ?

注意:
1、请勿单纯发表顶啊、打酱油之类无任何意义的评论,否则将被视为spam!谢谢合作!
2、但欢迎你留下对本文的看法或技术上的任何疑问,我会及时回复你。