Intereting Posts
Статические страницы не работают Как удалить мистический текст из текста? Изображение включено Создание oEmbed работы над полем выдержки Изменить имя автора в Sitename на Frontend WordPress для вопросов и ответов Асинхронный запрос в wordpress Обновление WordPress, переписывание настроек настройки – стратегии? Получить URL-адрес для загрузки плагина из пули WordPress: отображение всех тегов сообщений из определенного термина таксономии отображать случайные сообщения на index.php вместо последних Я хочу разработать локально с помощью Multisite, а затем перенести каждый сайт на отдельные удаленные установки WP Что такое PHP-расширения и библиотеки WP, которые нужны и / или используют? И VPS, и домен изменились, но URL-адрес базы данных остался прежним, а PHPmyadmin недоступен для его изменения Вручную запрашивать сообщения по таксономии с MySQL Установите минимальное количество символов в поиске

Результаты WP_Query, хранящиеся в переменных

Я хотел бы знать, есть ли способ сохранить результаты WP_Query в переменных, которые я могу затем продолжить и вставлять в любом месте на странице вне цикла. Например, скажите, что я хочу получить URL-адреса графических образов из трех последних сообщений, и я хочу установить переменные таким образом, чтобы это было похоже на следующее. (Обратите внимание, что приведенный ниже код предназначен только для иллюстрации, поскольку я понятия не имею, как разбирать результаты из цикла для каждого сообщения)

$featureImageFirst = wp_get_attachment_url(); $featureImageSecond = wp_get_attachment_url(); $featureImageThird = wp_get_attachment_url(); 

В ответ на помощь Сорена я сделал это:

Привет, Сорен, пожалуйста, взгляните на мой код. Это то, что происходит.

  <?php // Get latest three posts $args = [ 'posts_per_page' => 3, 'orderby' => 'date', 'order' => 'DESC' ]; // Fetch posts $query = new WP_Query( $args ); if( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); $featureImage[$current_post] = wp_get_attachment_url( get_post_thumbnail_id() ); } } ?> <div><img src="<?php echo $featureImage[0]; ?>"></div> 

И это то, что я получаю

 <div><img src></div> 

Solutions Collecting From Web of "Результаты WP_Query, хранящиеся в переменных"

Из того, что я читал, вы читаете URL / путь к эскизам сообщений – это массив. Нам нужно взглянуть на пару вещей, чтобы сделать это как можно более предсказуемым и предсказуемым

ВАЖНЫЕ СООБРАЖЕНИЯ

  • Нам нужен какой-то способ убедиться, что мы получим последние три сообщения, которые на самом деле имеют миниатюры, чтобы избежать неожиданного вывода и ошибок. Всегда важно кодировать мышление, что мой код будет взломан, и он потерпит неудачу, и у него появятся ошибки. Когда у вас есть это мышление, вы смотрите на свой код под другим углом, что заставляет вас задавать такие вопросы, как: Что делать, если этот конкретный код кода возвращает ошибку, как это повлияет на мой вывод, как я буду безопасно обрабатывать такие ошибки и надежный ожидаемый, предсказуемый способ, не нарушая что-то еще на моем сайте

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

  • Когда вам нужны тощие, не разбитые на страницы, точечные запросы, подобные этому, я всегда использую get_posts поскольку он ломает разбивку на страницы на законных основаниях. Это делает ваш запрос быстрее, что действительно помогает на сайтах с большим количеством сообщений. Вы все равно можете использовать WP_Query , но тогда вам нужно будет запомнить 'no_found_rows' => true для ваших аргументов запроса ( это именно то, что делает get_posts ). Еще один плюс использования get_posts заключается в том, что он просто возвращает свойство $posts из экземпляра WP_Query . Но все это просто личное предпочтение

КОД

Я предпочитаю писать функции для длинных фрагментов кода, чтобы мои шаблоны были такими же простыми и короткими, насколько это было возможно. Затем я могу просто вызвать свои функции там, где они мне нужны, или даже использовать do_action() в моих шаблонах, а затем подключить мои функции к этому конкретному действию

В любом случае, давайте посмотрим на функцию; ( ПРИМЕЧАНИЕ: следующее непроверено, требуется PHP 5.4+ и может быть более динамичным при необходимости)

 function get_latest_post_thumbnails_urls() { // Set an empty variable which will hold our array of URL's $output = []; // Set our query args $args = [ 'posts_per_page' => 3, 'fields' => 'ids', // Only get post ID's 'meta_query' => [ // Get posts which has thumbnails only [ 'key' => '_thumbnail_id', 'compare' => 'EXISTS' ] ], // Any additional parameters you might need ]; $q = get_posts( $args ); // ALWAYS make sure we have posts, else return $output if ( !$q ) return $output; // Ok, we have posts, lets loop through them and create an array of URL's foreach ( $q as $id ) $output[] = wp_get_attachment_url( get_post_thumbnail_id( $id ) ); // Return our array return $output; } 

Теперь мы можем использовать get_latest_post_thumbnails_urls(); где бы мы ни находились.

ПРИМЕНЕНИЕ

Мы должны помнить, что наша функция может возвращать пустой массив или массив с 1, 2 или 3 URL-адресами, поэтому мы всегда должны быть уверены в этом, прежде чем пытаться использовать что-либо, чтобы избежать ошибок и иметь неожиданные сбои

Это вероятная безопасная система, которую мы можем использовать

 $urls = get_latest_post_thumbnails_urls(); // Make sure we do not have an empty array if ( $urls ) { foreach ( $urls as $url ) { // Do something with your thumbnail url echo $url . '</br>'; // For testing, remove this } } 

A ) Вы можете сохранить URL-адрес в массиве. Индекс сообщения, отображаемого в настоящее время, равен $current_post . Таким образом, вы можете использовать его также как индекс массива.

 if ( have_posts() ) : while ( have_posts() ) : the_post(); if ( has_post_thumbnail() ) { $featureImage[$current_post] = wp_get_attachment_url( get_post_thumbnail_id() ); } endwhile; endif; 

После Loop у вас есть:

 $featureImage[0] (value: http://example.org/thumbnail_of_post_1.jpg) $featureImage[1] (value: http://example.org/thumbnail_of_post_2.jpg) $featureImage[2] (value: http://example.org/thumbnail_of_post_3.jpg) 

B ) Вы можете использовать несколько запросов на странице. См. Здесь, в Кодексе.