你列出的第一个条件很简单。你只需要post_parent__in
参数。
$args = array(
\'post_type\' => \'page\',
\'posts_per_page\' => 1,
\'orderby\' => \'rand\',
\'post_parent__in\' => array(2,169), // replace with your IDs
);
$rand = new WP_Query($args);
if ($rand->have_posts()) {
while ($rand->have_posts()) {
$rand->the_post();
the_title();
echo \'<br>\';
}
}
对于第二个条件,我认为您需要一个过滤器。
WP_Query
据我所知,我无法处理这种逻辑。
function restrict_post_name_wpse_130401($where) {
remove_filter(\'posts_where\',\'restrict_post_name_wpse_130401\');
return $where.\' AND post_title != "Contributors"\';
}
add_action(\'posts_where\',\'restrict_post_name_wpse_130401\');
$args = array(
\'post_type\' => \'page\',
\'posts_per_page\' => 1,
\'orderby\' => \'rand\',
\'post_parent__in\' => array(2,169), // replace with your IDs
);
$rand = new WP_Query($args);
if ($rand->have_posts()) {
while ($rand->have_posts()) {
$rand->the_post();
the_title();
echo \'<br>\';
}
}
使用如上所述,这应该很好。也就是说,如果在查询之前添加过滤器,它将运行并删除自身,只影响一个查询。