Контекст: Я создал популярный виджет сообщений, который использует мета-поле в качестве индикатора того, насколько популярна публикация. Этот виджет связан с плагином для обмена социальными сетями, так что, когда они извлекают количество акций для популярных сетей, он сохраняет эти счета в мета-поле. Затем мы можем запросить это мета-поле, чтобы показывать популярные сообщения, исходя из того, сколько раз статья делилась через социальные сети.Почему этот пользовательский цикл WordPress не использует мои аргументы?
Образец кода: Это небольшая выборка кода, который я использую. Очевидно, что после этой части кода мы закрываем цикл while, закрываем условие, перезапускаем данные почтового запроса и т. Д. Полное содержимое этого файла виджетов можно найти здесь: https://github.com/warfare-plugins/social-warfare/blob/master/functions/widgets.php Часть, которую вы видите ниже, начинается с строка 330 этого файла.
// If a custom timeframe is not being used....
if($timeframe == 0):
// Create the arguments for a query without a timeframe
$swp_args = array(
'posts_per_page' => $count,
'post_type' => 'post',
'meta_key' => '_'.$network,
'orderby' => 'meta_value_num',
'order' => 'DESC',
);
// If a custom timeframe is being used....
else:
// Create the arguments for a query with a timeframe
$swp_args = array(
'posts_per_page' => $count,
'post_type' => 'post',
'meta_key' => '_'.$network,
'orderby' => 'meta_value_num',
'order' => 'DESC',
'date_query' => array(
'column' => 'post_date',
'after' => '- '.$timeframe.' days'
)
);
endif;
// Reset the main query
wp_reset_postdata();
// Query and fetch the posts
$swq = new WP_Query($swp_args);
// Begin the loop
if($swq->have_posts()) :
$i = 1;
while($swq->have_posts()):
$swq->the_post();
Проблема: У нас есть этот плагин на чуть более 5000 сайтов. Однако на небольшом количестве сайтов он НЕ использует наш пользовательский запрос, но вместо этого он использует запрос WordPress по умолчанию. В этих случаях он возвращает самые последние сообщения и возвращает количество сообщений в зависимости от настроек WordPress на странице. Фактически, на одном сайте, например, он отлично работает на одной странице, но на страницах архива/категории он возвращается к использованию цикла по умолчанию WordPress вместо моего пользовательского запроса.
Интересно, является ли их еще один плагин или тема, которая добавила некоторые перехватчики или что-то еще в WordPress-запрос, и это переопределяет мои пользовательские аргументы.
Единственное, что я пробовал до сих пор, это добавить wp_reset_postdata() до и после моего запроса, но, похоже, ничего не исправить.
Вопрос: Есть ли способ запустить этот пользовательский запрос и гарантировать, что он запускает пользовательский запрос и никогда не запускает запрос WordPress по умолчанию?
Позвольте мне ответить на это процитировать то, что я сказал в исходном сообщении: «Очевидно, что после этой части код, мы закрываем цикл while, закрываем условное выражение, перезапускаем данные почтового запроса и т. д. Полное содержимое этого файла виджетов можно найти здесь: GETHUB: https://github.com/warfare-plugins/social-warfare /blob/master/functions/widgets.php " –