Intereting Posts
Простой слайдер изображения для WordPress с цифровым разбиением на страницы Как получить доступ к базе данных WP внутри ipn.php? Перемещение вариантов оплаты при оформлении заказа в WooCommerce Фильтрация иерархической персонализированной страницы администратора по типу сообщений родителем и включение детей и внуков Внутренние ссылки, которые автоматически обновляются Самый безопасный способ автоматизировать резервное копирование WordPress Получить прикрепление изображения к сообщению вне цикла? После переключения multisite на nginx регистрация Buddypress прекратила работу Использование $ this из класса child внутри функции shortcode Включить файл перед текущим файлом шаблона Не удается обновить общие настройки сайта и талисмана WordPress wp_get_attachment_image_src Изменение структуры постоянной ссылки категории Что означает «category__in» в запросах? meta_query отображает все результаты и ничего, мой запрос неверен

Список сообщений, основанных на первом письме сообщений

Я хочу добавить разбивку на страницы

Как я могу сделать это как на loop.php, так и на search.php. Я хочу показать алфавитный индекс, чтобы искать только сообщения со стартовой буквой = [E], например. Прямо сейчас, если я ищу в E, он ищет любое совпадение, title+content+part of title .

[A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] .. ….. [Z]

Легкое сообщение – По администратора на 2013 год

сообщение содержание …. bla bla bla …

Пример сообщения – другой тест – по администратора на 2013 год

сообщение содержание …. bla bla bla …

[A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] .. ….. [Z]

Solutions Collecting From Web of "Список сообщений, основанных на первом письме сообщений"

Это код, который я получаю отсюда , но я не помню точную страницу, и это моя рабочая страница письма B на моем веб-сайте (используя тот же код, что вы видите ниже)

 <?php /* Template Name: Locali per lettera A WordPress template to list page titles by first letter. You should modify the CSS to suit your theme and place it in its proper file. Be sure to set the $posts_per_row and $posts_per_page variables. */ $posts_per_row = 3; $posts_per_page = -1; $pageURL = 'http'; $post_type = 'post'; if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; } $letters = $wpdb->get_col( "SELECT DISTINCT LEFT(post_title,1) AS first_letter FROM $wpdb->posts WHERE post_type = '$post_type' AND post_status = 'publish' ORDER BY first_letter ASC" ); $first_letter = ($_GET['first_letter']) ? $_GET['first_letter'] : $letters[0]; ?> <?php get_header(); ?> <style type="text/css"> .letter-group { width: 100%; border-top: 1px solid #444; } .navigation { text-align: center; padding:5px; margin: 0 10px;} .letter { display:inline; color:#DDD;text-align: center; padding: 2px; border-top: 1px solid #48465B; border-left: 1px solid #48465B; background: #18181C; margin: 0 1px;} .letter a{ color:#DDD;} .letter-cell { width: 5%; color:red; font-weight:bold; height: 2em; text-align: center; padding-top: 8px; margin-bottom: 8px; border-top: 1px solid #48465B; background: #18181C; float: left; } .row-cells { width: 94%; float: right; } .title-cell { width: 33%; float: left; overflow: hidden; margin-bottom: 8px; } .alignleft { float: left; margin-left: 25px; } .alignright { float: right; margin-right: 25px; } .clear { clear: both; } div#az .padder { border-right: none; margin-right: none; padding: 20px 40px; } </style> <div id="main-background"> <div id="main-column"> <br /> <h2><?php the_title(); ?></h2> <div class="margin-top"></div> <div id="az"> <?php $mam_global_where = " AND LEFT(post_title,1) = '$first_letter' "; $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array ( 'posts_per_page' => $posts_per_page, 'post_type' => $post_type, 'orderby' => 'title', 'order' => 'ASC', 'paged' => $paged, 'caller_get_posts' => 1 ); query_posts($args); $mam_global_where = ''; // Turn off filter if ( have_posts() ) { $in_this_row = 0; while ( have_posts() ) { the_post(); $first_letter = strtoupper(substr(apply_filters('the_title',$post->post_title),0,1)); if ($first_letter != $curr_letter) { if (++$post_count > 1) { end_prev_letter(); } start_new_letter($first_letter); $curr_letter = $first_letter; } if (++$in_this_row > $posts_per_row) { end_prev_row(); start_new_row(); ++$in_this_row; // Account for this first post } ?> <div class="title-cell"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"> <?php the_title(); ?></a></div> <?php } end_prev_letter(); ?> <div class="navigation"> <?php foreach ($letters as $letter) { $url = add_query_arg('first_letter',$letter,$pageURL); echo "<div class='letter'>"; echo "<a href='$url' title='Starting letter $letter' > $letter </a>"; echo "</div>"; } ?> </div> <?php } else { echo "<h2>Sorry, no posts were found!</h2>"; } ?> </div><!-- End id='az' --> </div><!-- End class='margin-top --> </div><!-- End id='rightcolumn' --> <?php function end_prev_letter() { end_prev_row(); echo "</div><!-- End of letter-group -->\n"; echo "<div class='clear'></div>\n"; } function start_new_letter($letter) { echo "<div class='letter-group'>\n"; echo "\t<div class='letter-cell'>$letter</div>\n"; start_new_row($letter); } function end_prev_row() { echo "\t</div><!-- End row-cells -->\n"; } function start_new_row() { global $in_this_row; $in_this_row = 0; echo "\t<div class='row-cells'>\n"; } ?> 

Это вопрос о том, как справиться с этой проблемой. Это изменяет сам SQL-запрос, но это почти 1 лайнер. Я уверен, что есть и другие способы, но этот метод не очень инвазивен для процесса построения запроса, поскольку он только модифицирует SQL в конце. Примечание. Я понимаю, что этот метод может быть узурпирован синтаксисом конструктора запросов в какой-то момент.

Первый крючок в фильтр:

 add_filter('posts_request', 'YP_company_name_where', 10, 2); 

Затем давайте изменим точную часть запроса SQL, обратите внимание, что мы ищем условие, в котором выполняется поиск / фильтр, для первой буквы и в нашем конкретном случае, если в $ input содержится «short-company- имя'. Настройте свое условное по своему вкусу.

 function YP_company_name_where($input, &$wp_query) { if (stripos($input, 'short-company-name') !== FALSE) { $x = preg_replace("/wp_postmeta.meta_key\s=\s'short-company-name'\sAND\sCAST\(wp_postmeta.meta_value\sAS\sCHAR\)\sLIKE\s'\%/", "wp_postmeta.meta_key = 'short-company-name' AND CAST(wp_postmeta.meta_value AS CHAR) LIKE '", $input, 1); return $x; } return $input; } 

Обратите внимание: если это не так, как ваш конкретный запрос, просто выгрузите $ input, найдите ошибочный и настройте SQL на этом этапе, чтобы ваш запрос искал «… LIKE [letter]%» против нужной колонки. Вся «замена» действительно делает именно поиск конкретного запроса и удаление «LIKE% [letter]%» и замену его «LIKE [letter]%».

Я сделал это так, потому что я уже использовал плагин front-end для фильтрации / запросов сообщений и не мог легко использовать автономный SQL-запрос, чтобы просто найти первую букву. Я имел дело с многопараметрической, управляемой пользователем и / или логической фильтрацией ситуацией запроса, и было легче изменить конечный результат для этого случая.