WordPress搜索结果仅包含标题文章
  • 1年前
  • WordPress搜索结果仅包含标题文章251
  • 如果你直接通过SQL获取的话,那么这篇文章可能意义不大,毕竟SQL已经是最直接的了。

    如果你不是的话,希望达到这个效果,下面的代码可以帮你解决:

    /**
     * Search SQL filter for matching against post title only.
     *
     * @link    http://wordpress.stackexchange.com/a/11826/1685
     *
     * @param   string      $search
     * @param   WP_Query    $wp_query
     */
    function wpse_11826_search_by_title( $search, $wp_query ) {
        if ( ! empty( $search ) && ! empty( $wp_query->query_vars['search_terms'] ) ) {
            global $wpdb;
    
            $q = $wp_query->query_vars;
            $n = ! empty( $q['exact'] ) ? '' : '%';
    
            $search = array();
    
            foreach ( ( array ) $q['search_terms'] as $term )
                $search[] = $wpdb->prepare( "$wpdb->posts.post_title LIKE %s", $n . $wpdb->esc_like( $term ) . $n );
    
            if ( ! is_user_logged_in() )
                $search[] = "$wpdb->posts.post_password = ''";
    
            $search = ' AND ' . implode( ' AND ', $search );
        }
    
        return $search;
    }
    
    add_filter( 'posts_search', 'wpse_11826_search_by_title', 10, 2 );
    

    代码中已经包含了出处,如果感兴趣的可以去看看,简单的说这个代码的功能就是替换主查询中的查询参数达到想要的目的,但是使用的过滤器我倒是第一次注意到,之前都是pre_get_post,针对搜索的过滤器是第一关注。

  • 联系我们
  • 有任何疑问欢迎联系我们
  • WP新手学园
  • WordPress搜索结果仅包含标题文章
  • 邮箱:2830776172#qq.com(#换成@)
  • 回复时间:9:00-19:00
  • 如果提问.请图文并茂,详细描述问题
  • WordPress搜索结果仅包含标题文章
  • 微信号:wpxsxy_official
  • 仅支持付费解决问题
  • *并非所有问题都会被回复
  • WordPress搜索结果仅包含标题文章
  • QQ:2830776172
  • 回复时间:9:00-19:00
  • QQ仅支持付费提问,时间有限,尽情谅解
  • WordPress搜索结果仅包含标题文章
  • QQ群:198768181
  • 有问题可以进去提问,寻求群友帮助
  • *并非所有问题都会被回复
  • WordPress搜索结果仅包含标题文章
  • 咸鱼:WP新手学园
  • 如果对于直接交易不放心,可以走闲鱼
  • *咸鱼价格不作为最终交易价格
  • 备案号:鄂ICP备2021011647号-1