使query_posts根据帖子标题中的术语排除帖子

时间:2014-01-09 18:22:28

标签: wordpress

我的页面上的帖子是通过此查询获取的:

<?php
$limit = get_option('posts_per_page');
query_posts(array(
'showposts'=>62,
'more' => $more = 0,
'v_sortby'  => 'views',
'v_orderby' => 'DESC',
'v_outtype' => 'content',
'v_timespan' => 'year',
'paged' => $paged
));?>               
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

但是,我想排除标题中包含单词&#34; Metal&#34;的所有帖子。 我知道有'post__not_in' =>功能,但我不确定如何实现它。

我试过

$exclude1 = get_page_by_title('Metal');然后包括

 'post__not_in' => array($exclude1->ID,$exclude2->ID)

但这似乎以页面为中心,而不是自己发布标题。

1 个答案:

答案 0 :(得分:1)

在论点中:

$args['special_search'] = 'Metal';

在你的functions.php中:

add_filter( 'posts_where', 'special_search_posts_where', 10, 2 );
function special_search_posts_where( $where, $query ) {
    if (isset($query->query_vars["special_search"])) {
        global $wpdb;
        $where .= ' AND ' . $wpdb->posts . '.post_title NOT LIKE \'%' . $query->query_vars["special_search"] . '%\'';
    }

    return $where;
}