零基础建站培训介绍

当前位置:

WordPress 搜索功能开发:一篇自动跳转、回复的评论加@

以下是5个在Wordpress 搜索功能开发过程中用到的小功能代码。

第一个:搜索结果只有一篇文章时自动跳转到文章


function Bing_redirect_single_post() {
global $wp_query;
if ($wp_query->post_count == 1 && $wp_query->max_num_pages == 1) {
wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
exit;
}
}
if( is_search() ) add_action('template_redirect', 'Bing_redirect_single_post');

第二个:回复的评论加at


function Bing_comment_add_at( $comment_text, $comment = '') {
if( $comment->comment_parent > 0) {
$comment_text = '<a class="comment_at" href="#comment-' . $comment->comment_parent . '">@'.get_comment_author( $comment->comment_parent ) . '</a> ' . $comment_text;
}
return $comment_text;
}
add_filter( 'comment_text' , 'Bing_comment_add_at', 20, 2);

第三个:提高搜索结果相关性


function search_orderby_filter( $orderby = '' ){
global $wpdb;
$keyword = $wpdb->prepare($_REQUEST['s']);
return "((CASE WHEN {$wpdb->posts}.post_title LIKE '%{$keyword}%' THEN 2 ELSE 0 END) + (CASE WHEN {$wpdb->posts}.post_content LIKE '%{$keyword}%' THEN 1 ELSE 0 END)) DESC,
{$wpdb->posts}.post_modified DESC, {$wpdb->posts}.ID ASC"
;
}
if( is_search() ) add_filter('posts_orderby_request', 'search_orderby_filter');

第四个:搜索结果只限文章


function Bing_search_filter_page( $query ){
if ( $query->is_search ) {
$query->set('post_type', 'post');
}
return $query;
}
if( is_search() ) add_filter('pre_get_posts','Bingsearch_filter_page');

第五个:垃圾评论拦截


if( Bing_get_panel('comment_anti') ):
class anti_spam {
function anti_spam() {
if ( !current_user_can('level_0') ) {
add_action('template_redirect', array($this, 'w_tb'), 1);
add_action('init', array($this, 'gate'), 1);
add_action('preprocess_comment', array($this, 'sink'), 1);
}
}
function w_tb() {
if ( is_singular() ) {
ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=(["\'])comment(["\'])(.+)/textarea>#",
"textarea$1name=$2w$3$4/textarea><textarea name="comment" cols="100%" rows="4" style="display:none"></textarea>",$input);'
) );
}
}
function gate() {
if ( !empty($_POST['w']) && empty($_POST['comment']) ) {
$_POST['comment'] = $_POST['w'];
} else {
$request = $_SERVER['REQUEST_URI'];
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '隐瞒';
$IP = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] . ' (透过代理)' : $_SERVER["REMOTE_ADDR"];
$way = isset($_POST['w']) ? '手动操作' : '未经评论表格';
$spamcom = isset($_POST['comment']) ? $_POST['comment'] : null;
$_POST['spam_confirmed'] = "请求: ". $request. "\n来路: ". $referer. "\nIP: ". $IP. "\n方式: ". $way. "\n內容: ". $spamcom. "\n -- 记录成功 --";
}
}
function sink( $comment ) {
if ( !empty($_POST['spam_confirmed']) ) {
if ( in_array( $comment['comment_type'], array('pingback', 'trackback') ) ) return $comment;
//方法一: 直接挡掉, 將 die(); 前面两斜线刪除即可.
die();
//方法二: 标记为 spam, 留在资料库检查是否误判.
//add_filter('pre_comment_approved', create_function('', 'return "spam";'));
//$comment['comment_content'] = "[ 小墙判断这是 Spam! ]\n". $_POST['spam_confirmed'];
}
return $comment;
}
}
$anti_spam = new anti_spam();

function Bing_spam_comments($comment_data){
$pattern = '/[一-龥]/u';
if(!preg_match($pattern,$comment_data['comment_content'])){
$err = __( '不允许不包含中文的评论哦' , 'Bing' );
if( function_exists( 'err' ) ) err( $err );
else wp_die( $err );
}
return($comment_data);
}
add_filter('preprocess_comment','Bing_spam_comments');
endif;
上一课: 下一课:

相关教程

  • sql server软件安装完毕后,需要新建一个数据库用来作为做网站的数据库。下面介绍一下sqlserver数据库如何创建用户的流程。1、打开sql管理界面,如图
  • bloginfo() 直接在浏览器中输出内容,我们创建一个wordpress博客的时候,我们需要填写博客的相关信息,包括博客名称,博客描述,博客地址等等。当我们
  • 以下是Wordpress做网站过程中常用的几个功能,分享给学习建网站的新手们。功能一:文章内容全部链接新窗口打开function Bing_autoblank($text
  • 织梦数据库配置文件所在位置路径为:/data/common.inc.php修改方法:把这个文件使用ftp下载下来,用记事本编辑.下面是该dede数据库配置文件的内容:
  • 用织梦dedecms建站的新手站长,在更新文章图片时都会添加自己网站独特的水印,织梦dedecms默认安装后,用的是默认水印,很不美观。其实解决水印控制
  • 很多人都是用dedecms(织梦) 源码建设网站,有些时候网站需要开启会员功能才能使用一些功能,那么dedecms(织梦)如何开启会员功能呢?下面就跟大家
  • dedecms中include标签的作用是引入一个文件。代码形式:{dede:include filename="文件路径"/}这个标签可以很好的帮助我们
  • 原因:DEDECMS 织梦后台验证码不显示主要原因是由于网站配置文件包含Unicode签名。解决方法:一般上传到服务器上配置文件是需要修改下的,很多程序
  • 站群主要包括子域名站群、独立域名站群、目录站群等多种解决方案,优势各有千秋,站群软件也有多种。以下是给大家介绍使用最常见的CMS系统-织梦dede
  • dedecms怎么控制文章摘要字数有时候觉得文字的摘要不够长,我们经常的操作就是去后台修改文字字数,但是织梦默认最大的摘要长度是250个字符,2个字符