我有一个循环播放所有新闻,但ACF设置了三个主要故事。这些是主要,次要和第三。如果每个字段只设置一个帖子,这不会成为问题。但是,客户希望能够设置一个新的主帖子,而不必担心删除旧帖子。
为了完成这项工作,我试图让循环忽略这三个字段中的第一个,同时显示其余的以及设置为“No'”的其他帖子。
我正在尝试这样的事情,但我不知道该怎么做。
$args = array(
// 'offset' => 1,
'posts_per_page' => -1,
'meta_query' => array(
array(
'offset' => 1,
'key' => 'main_story',
'value' => 'Secondary',
'compare' => 'NOT',
)
),
'meta_query' => array(
array(
'offset' => 1,
'key' => 'main_story',
'value' => 'Third',
'compare' => 'NOT',
)
),
'meta_query' => array(
array(
'offset' => 1,
'key' => 'main_story',
'value' => 'Main',
'compare' => 'NOT',
)
),
);
我知道偏移消除了分页的能力,这很重要,但我看到了https://codex.wordpress.org/Making_Custom_Queries_using_Offset_and_Pagination并且还被告知可以解决这个问题。这部分暂时更重要。
答案 0 :(得分:0)
以下是我最终无法完成上述工作的方法
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
<?php
$excluded_key = "main_story";
$excluded_val = array("Main", "Secondary", "Third");
$exclude_ids = array();
?>
<?php
foreach ($excluded_val as $exclude) {
$args = array(
'posts_per_page' => 1,
'order' => 'DESC',
'meta_query' => array(
array(
'key' => $excluded_key,
'value' => $exclude,
)
)
);
$excluded_id = get_posts($args);
foreach($excluded_id as $to_exclude) {
$exclude_ids[] = $to_exclude->ID;
}
}
?>
<?php
$args = array(
'post__not_in' => $exclude_ids,
'paged' => $paged
);
?>
<?php $the_query = new WP_Query( $args ); ?>
<?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>