Как добавить фильтр a-z в результаты поиска wordpress? - PullRequest
0 голосов
/ 15 марта 2012

Мне нужно отфильтровать результаты поиска по алфавиту, например, в начале страницы результатов поиска будет список букв A - B - C - .... - Z - ALL

и когда янажмите на любую букву, результат покажет мне сообщения, которые начинаются только с этой буквы

1 Ответ

3 голосов
/ 25 марта 2012

в 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>

, например, при нажатиилюбая буква в результате поиска будет отфильтрована по сообщениям, которые начинаются только с этой буквы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...