Вопрос: Выход из текущего сообщения из цикла

Я создаю поисковый виджет и для этого использую вторичный цикл с помощью нового WP_Query ();

$query = new WP_Query('s=searchTerm');if ($query->have_posts()){    while ($query->have_posts()){        $query->the_post();        //echo the post    }    wp_reset_postdata();}else {    echo 'No results';    die();}

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

Ответы и комментарии:

Ты прав. Я изменил название. Вы правы и в использовании post__not_in. Я пробовал это прежде, чем спросить здесь, но дело в том, что $ post-> ID пуст. Я попробовал даже GLOBAL $ post; а затем $ post-> ID, но пусто. Я нахожусь в function.php.
Создан 31-08-2014 12:57 TGeorge

на функцию обратного вызова AJAX. add_action ('wp_ajax_nopriv_do_smth', 'do_smth'); add_action ('wp_ajax_do_smth', 'do_smth'); function do_smth () {// code} Может быть, в этом проблема?
Создан 31-08-2014 12:30 TGeorge

get_the_ID () лучше, чем использование global. Если ID недоступен, значит, это слишком рано или что-то напутало.
Создан 31-08-2014 02:27 Rarst

В коде, который я разместил, я не использую ни get_the_ID, ни global $ post ;. Я использую get_queried_object () и is_singular (), потому что виджет можно использовать где угодно: is_singular () проверяет, что мы находимся в посте; тогда get_queried_object () вернет текущий объект записи, и $ post-> ID не будет пустым. Я использую is_singular (), потому что если вы находитесь в режиме просмотра архива, вам не нужно проверять, чтобы исключить ID сообщения для исключения. Если вы используете код в вызове ajax, он не будет работать; вам нужно передать идентификатор сообщения в данных запроса ajax.
Создан 31-08-2014 03:26 cybmeta

Хотя ваш метод может работать, я думаю, что лучше локализовать переменные javascript, как это сделано в примере, если вы хотите правильно управлять зависимостями сценариев и ограничить «загрязнение» глобального пространства имен. Просто мнение, я не эксперт по JavaScript.
Создан 01-09-2014 08:47 cybmeta

Хорошая попытка :)) Проблема в том, что порядок сообщений может отличаться. В моем случае текущая страница, которую я просматриваю, отображается в конце.
div>
div>
Создан 31-08-2014 11:33 TGeorge

Имейте в виду, что использование «смещения» вызовет проблемы с нумерацией страниц.
Создан 31-08-2014 12:28 Michael

Название вопроса является неточным. Я думаю, что вы не хотите экранировать первый пост, вместо этого вы хотите исключить текущий пост. Вы можете использовать аргумент post__not_in в WP_Query.
$ args = array ('s' => 'searchTerm');

// Проверяем, находимся ли мы в посте любого типа
if (is_singular ()) {
    $ post = get_queried_object ();
    $ args ['post__not_in'] = массив ($ post-> ID)
}

$ query = new WP_Query ($ args);
if ($ query-> have_posts ()) {
    while ($ query-> have_posts ()) {
        $ Query-> the_post ();
        // повторяем сообщение
    }
    wp_reset_postdata ();
}

ОБНОВИТЬ
Поскольку вы используете код в запросе ajax, у вас нет доступа к текущим данным в хуке действий ajax. Вам нужно передать текущий идентификатор сообщения в данных запроса ajax.
Например (не проверял. Просто пишу здесь):
// ставим в очередь скрипты и локализуем переменные js
add_action ('wp_enqueue_scripts', 'cyb_scripts');
function cyb_scripts () {

    // зарегистрируем my-script
    wp_register_script ('my-script', '/url/to/my-sript.js', array ('jquery'));

    // ставим в очередь my-sript и зависимости
    wp_enqueue_script ( 'JQuery');
    wp_enqueue_script ( 'мой-скрипт');

    // Локализуем данные скрипта для использования в my-script. Установите здесь идентификатор сообщения, чтобы исключить
    $ exclude_post = 0;
    if (is_singurlar ()) {
        $ current_post = get_queried_object ();
        $ exclude_post = $ current_post-> ID;
    }
    $ scriptData = array (
                      'ajaxurl' => admin_url ('admin-ajax.php');
                      'exclude_post' => $ exclude_post
                     );
     wp_localize_script ('my-script', 'my_script_data', $ scriptData);

}

// Ajax action hooks
add_action ('wp_ajax_nopriv_process_ajax', 'cyb_process_ajax');
add_action ('wp_ajax_process_ajax', 'cyb_process_ajax');
function cyb_process_ajax () {

    $ args = array ('s' => 'searchTerm');

    // Проверяем почту для исключения
    if (isset ($ _ GET ['exclude_post'])) {
        $ args ['post__not_in'] = array (intval ($ _GET ['exclude_post']));
    }

     $ query = new WP_Query ($ args);
     // ....
     wp_reset_postdata ();

}

JavaScript
JQuery (документ) .ready (функция ($) {

    $ .Ajax ({

        тип: "GET",
        url: my_script_data.ajaxurl,
        данные: {
            действие: "process_ajax",
            exclude_post: my_script_data.exclude_post
        }
    })
    .done (функция (ответ) {
        // ....
    })
    .fail (функция (ответ) {
        // ....
    });
});
Создан 31-08-2014 03:17

Попробуйте добавить параметр смещения в аргументы.
$ query = new WP_Query (array ('offset' => 1, 's' => 'searchTerm'));
    if ($ query-> have_posts ()) {
        while ($ query-> have_posts ()) {
            $ Query-> the_post ();
            // повторяем сообщение
        }
        wp_reset_postdata ();
    }
    еще {
        эхо «Нет результатов»;
        умереть();
    }
Создан 31-08-2014 10:09 Abhik1,45621021

Ummmmmmm ...... Logcat? Я сомневаюсь, однако, поскольку вы перезагрузились. Попробуйте снова установить их и нанесите снимок экрана
Создан 10-10-2016 08:51 Dan Brown

Если бы я знал, какие приложения были в этой партии, я бы просто переустановил их. @Дэн Браун
Создан 11-10-2016 12:10 Mindwin

Тогда вы не можете AFAIK.
Создан 11-10-2016 12:12 Dan Brown

@DanBrown Я надеялся, что игра Google сохранит список или зарегистрирует где-нибудь.
Создан 11-10-2016 02:55 Mindwin

Если вы их раньше не устанавливали, вы можете найти их во всех разделах моих приложений
Создан 11-10-2016 02:17 Dan Brown

Ваша версия для Android - более низкая версия, или вы должны скачать приложения на планшетном ПК, а не в браузере CMIIW
Создан 11-10-2016 03:28 user1916051