我需要按字母顺序过滤搜索结果 在搜索结果页面的头部将有字母列表 A - B - C - .... - Z - ALL
当我点击任何字母时,结果会显示仅以该字母开头的帖子
答案 0 :(得分:3)
在你主题的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>
就像当你点击任何一个字母时,搜索结果将被过滤到仅以这个字母开头的帖子