如何在wordpress搜索结果中添加a-z过滤器



例如,我需要按字母顺序筛选搜索结果在搜索结果页面的首页会有字母列表A-B-C-……-Z-所有

当我点击任何一个字母时,结果会显示只以字母开头的帖子

在主题的search.php中

在循环添加之前

    <?php 
add_action( 'posts_where', 'startswithaction' );
function startswithaction( $sql ){
    global $wpdb;
    $startswith = get_query_var( 'startswith' );
    if( $startswith ){
        $sql .= $wpdb->prepare( " AND $wpdb->posts.post_title LIKE %s ", $startswith.'%' );
    }
    return $sql;
}
add_action( 'posts_where', 'startswithnumberaction' );
function startswithnumberaction( $sql ){
    global $wpdb;
    $startswithnumber = get_query_var( 'startswithnumber' );
    if( $startswithnumber ){ 
        $sql .= $wpdb->prepare( " AND $wpdb->posts.post_title NOT REGEXP %s ", '^[[:alpha:]]' );
    }
    return $sql;
}
query_posts( $query_string .'&startswith='.$_GET['letter'].'&posts_per_page=-1&startswithnumber='.$_GET['number']);
?>
</code>

然后添加您的链接

echo "<a href='$PHP_Self/?$query_string&number=true' ># </a> - ";

    foreach (range('A', 'Z') as $i)
    {
     $letter =strtolower($i);
        echo "<a href='$PHP_Self/?$query_string&letter=$letter' >$i </a> - ";
    }
    echo "<a href='$PHP_Self/?$query_string' >All </a>

就像当你点击任何一个字母时,搜索结果都会被过滤到只以这个字母开头的帖子

最新更新