myes 发表于 2021-7-4 11:26:40

WordPress屏蔽搜索非法关键词,求搜索关键词白名单功能

本帖最后由 myes 于 2021-7-4 11:37 编辑

现在的很多灰产利用搜索页面,非法关键词搜索,然后提交sitemap。

利用合法网站发布违法广告,以bc、色情、药物为主。

WordPress构建的网站,除了屏蔽搜索结果页面,也可以按以下方法屏蔽敏感字搜索。

但是我想要的是“白名单”方案,也就是说,只允许搜索“名单”内的关键字,如我的诉求是只允许搜索省市地名
或者只允许搜索不超过10个字符。
曾经找了好几个晚上,都没有找到好的办法。


添加禁止搜索关键词,可以屏蔽大多非法搜索,但是效率好像并不高,如果能够限定搜索词不能超过10个字符,也能屏蔽大多非法广告。欢迎大家提供高频高危关键词。


在WordPress当前主题的functions.php,添加以下代码,然后就可以在WordPress后台的“设置”-“阅读”(wp-admin/options-reading.php)的“搜索关键词屏蔽”,输入屏蔽的关键字,一个一行。

//屏蔽恶意关键词搜索
add_action('admin_init', 'php_search_ban_key');
function php_search_ban_key() {
add_settings_field('php_search_key', '搜索关键词屏蔽', 'php_search_key_callback_function', 'reading');
register_setting('reading','php_search_key');
}

function php_search_key_callback_function() {
echo '<textarea name="php_search_key" rows="10" cols="50" id="php_search_key" class="large-text code">' .

get_option('php_search_key') . '</textarea>';
}
add_action('template_redirect', 'php_search_ban');
function php_search_ban(){
if (is_search()) {
global $wp_query;
$php_search_key = get_option('php_search_key');
if($php_search_key){
$php_search_key = str_replace("\r\n", "|", $php_search_key);
$BanKey = explode('|', $php_search_key);
$S_Key = $wp_query->query_vars;
foreach($BanKey as $Key){
if( stristr($S_Key['s'],$Key) != false ){
wp_die('请不要搜索非法关键字');
}
}
}
}
}


推荐屏蔽高频敏感字:**** Hidden Message *****

myes 发表于 2021-8-27 16:06:26

调用指定分类的最新10条
/调用指定分类27的最新10条
<?php
    $args = array(
      'post_type' => 'post', //自定义文章类型名称
      'showposts' => 10, //输出的文章数量,这个可以是缺省值,不用设置
      'orderby' => 'modified', //按更新时间排序
      'tax_query' => array(
            array(
                'taxonomy' => 'circle',//自定义分类法名称
                'terms' => 27 //id为64的分类。也可是多个分类array(12,64)
                ),
            )
      );
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
      while ($my_query->have_posts()) : $my_query->the_post();?>
               <li>
<a href="<?php the_permalink() ?>" target="_blank"><?php the_title(); ?></a>

</li>
      <?php endwhile; wp_reset_query(); //重置query查询
       } ?>

让搜索结果支持自定义内容模型:
//让搜索支持自定义文章类型
function searchAll( $query ) {
if ( $query->is_search ) { $query->set( 'post_type', array( 'post','forums', 'product' )); }
return $query;
}
add_filter( 'the_search_query', 'searchAll' );

调用指定搜索关键字(如沙县小吃)文章list:
<?php
    $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
    $args = array(
    's'=>'沙县小吃',
    'showposts' => 10,
    'paged' => $paged
    );
    query_posts( $args );
    if ( have_posts() ) : while ( have_posts() ) : the_post();
    ?>
    <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
    <?php
    endwhile;
    wp_reset_postdata();
    endif;
    ?>
调用指定关键词调用list:
<?php the_content(); ?>
<?php
    $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
    $args = array(
    's'=>'福建',
    'showposts' => 10,
    'paged' => $paged
    );
    query_posts( $args );
    if ( have_posts() ) : while ( have_posts() ) : the_post();
    ?>
    <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
    <?php
    endwhile;
    wp_reset_postdata();
    endif;
    ?>

指定文章的tag id 调用列表list:
      <?php
    $args=array(
      'tag_id' => 16,//指定id
      'posts_per_page' => 5,//每页显示多少
      'orderby' => 'rand', //按随机排序
    );
    query_posts($args);
    if(have_posts()) : while (have_posts()) : the_post(); ?>
      <li style="font-weight: bold;">
<a href="<?php the_permalink() ?>" target="_blank"><?php the_title(); ?></a>
   <span class="time"><?php the_time('Y年n月j日'); ?></span>
   </li>
                     
<?php endwhile; endif; wp_reset_query();?>

指定频道cat=7随机10条list:
<?php query_posts('post_type=post&cat=7&showposts=10&orderby=rand'); ?>
            <?php while (have_posts()) : the_post(); ?>
               
                  <li><a href="<?php the_permalink() ?>" target="_blank"><?php the_title(); ?></a></li>
                         <?php endwhile; ?>

基于wpjam缩略图插件的调用cat=11最新修改的12条图文:
<?php $cat = get_the_category();
foreach($cat as $key=>$category) {
      $catid = $category->term_id;
}
$args = array('orderby' => 'modified','showposts' => 12,'cat' => 11 );
$query_posts = new WP_Query();
$query_posts->query($args);
while ($query_posts->have_posts()) : $query_posts->the_post();
?>
<div class="col-md-3 product-item mt30">
    <a href="<?php the_permalink() ?>" target="_blank" class="text-center center-block">
<?phpif(wpjam_has_post_thumbnail()){?>

<div class="entry-thumb">
      <a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php wpjam_post_thumbnail(,$crop=1);?></a>
</div>
<?php } ?>
<h3><?php the_title(); ?></h3>
    </a>
</div>

<?php endwhile;
?>
                <?php wp_reset_query();
?>
</div>
<?php endif; ?>



针对不同浏览器显示不同内容,比如微信公众号内显示微信公众号二维码,普通浏览器打开百度小程序二维码:
<?php$useragent = $_SERVER['HTTP_USER_AGENT'];
                if (strpos($useragent, 'MicroMessenger') === false) {
                echo "<img src=\"https://file.sxxcfw.cn/wp-content/uploads/2021/03/mb/baidu-miniapp-qr.png\" alt=\"沙县小吃网\" style=\"float:right;width:100px\">";
                } else {
                echo "                  
                     <img src=\"https://file.sxxcfw.cn/wp-content/uploads/2021/04/1618066200-sxxcfw-xcx.png\" alt=\"沙县小吃网\" style=\"float:right;width:100px\">
                     
                     ";
               } ?>

eltonto 发表于 2021-7-4 12:04:20

谢谢楼主!


day 发表于 2021-7-4 12:17:02

kankan

nanjim 发表于 2021-7-4 12:36:30

虽然看不懂,但是感觉好厉害的样子

戴维的个人博客 发表于 2021-7-4 18:46:35

wp还可以会员注册,自己发布吗

魚. 发表于 2021-7-4 21:14:59

楼主好人

0318dj 发表于 2021-7-5 10:18:12

楼主好人啊    顺便问下有zblog的吗?

本人很傻 发表于 2021-7-5 10:21:03

推荐屏蔽高频敏感字:

myes 发表于 2021-7-5 11:12:03

0318dj 发表于 2021-7-5 10:18
楼主好人啊    顺便问下有zblog的吗?

没有用过zblog,应该 也能实现这个功能,而且可以做的更好

negoo 发表于 2021-7-6 11:58:10

zblog现在用的比较多
页: [1] 2 3
查看完整版本: WordPress屏蔽搜索非法关键词,求搜索关键词白名单功能