Я сделал короткий код внутри своего плагина, который отлично работает. Штрих-код должен принимать некоторые параметры и создавать настраиваемый цикл с выходом.wordpress query (shortcode) возвращает всегда первое сообщение
Одним из параметров, сколько сообщений выхода контура для ($ маркеров)
$args=array(
'meta_key'=>'_mykey',
'post_status'=>'publish',
'post_type'=>'post',
'orderby'=>'date',
'order'=>'DESC',
'posts_per_page'=>$markers,
);
$wp_query = new WP_Query();
$wp_query->query($args);
if ($wp_query->have_posts()) : while (($wp_query->have_posts())) : $wp_query->the_post();
// do the loop using get_the_id() and $post->id
endwhile;endif;
wp_reset_query();//END query
На occations мне нужно будет иметь данные со всех постов ($markers = '-1')
, а иногда только один ($markers = '1')
или Muliple ($markers = 'x')
.
Все эти работы отлично работают на отдельных страницах/сообщениях, но моя проблема заключается в том, что когда эта функция находится в месте, где у меня есть более одного сообщения (! Is_single) и ($ markers = '1'
), он всегда будет возвращать данные для Последнее сообщение, а не для правильного один .. (например, в WordPress тема по умолчанию, где бы display10 посты - все они будут те же данные)
это, очевидно, проблема $post->ID
- но как могу ли я иметь правильный идентификатор сообщения при выполнении настраиваемого цикла OUTSIDE wp loop?
Я попытался ovverride проблемы
global $post;
$thePostIDtmp = $post->ID; //get the ID before starting new query as temp id
$wp_query = new WP_Query();
$wp_query->query($args);
// Start Custom Loop
if (!is_single()){
$post_id_t = $thePostIDtmp;}
else {
$post_id_t = $post->ID;}
, а затем использовать $post_id_t
- но это было не похоже на работу, Должен ли я не использовать get_the_id()? или я не должен использовать запрос (и использовать get_posts)?
Любые идеи/решения/мысли ??
спасибо за ответ - я подозревал, что мне нужно будет использовать query_posts() или get_posts(), похоже, это не помогает в моем случае, я не уверен, почему. –
вы пробовали эхом отослать сообщение id поэтому вы можете видеть, когда он изменится. Если вы повторите это в инструкции if, и когда вы установите переменную tmp, это может помочь вам увидеть, что происходит. – matpol