我有一个foreach循环,该循环仅返回最新帖子的title
。例如,我将帖子test
作为products
中的最新帖子,在下面定义的循环中,当进行var_dump
时,它仅转储名为“ test”的最新帖子的标题。
这是为什么?
方法:
<?php
$args = array(
'post_type' => 'products',
'post_parent' => 0,
'posts_per_page' => 15,
);
$products = get_posts( $args );
if ($products){
foreach ($products as $product) : setup_postdata( $product );
var_dump(get_the_title());
endforeach;
wp_reset_postdata();
}
?>
答案 0 :(得分:0)
public int compare(SomeBean o1, SomeBean o2) {
Map<String, Integer> firstLevel = new HashMap<>();
firstLevel.put("FIRS", 1);
firstLevel.put("LAS", 2);
int cmp = firstLevel.get(o1.getDir()).compareTo(firstLevel.get(o2.getDir()));
if (cmp != 0) {
return cmp;
}
Map<String, Integer> secondLevel = new HashMap<>();
secondLevel.put("P", 1);
secondLevel.put("T", 2);
cmp = secondLevel.get(o1.getEnv()).compareTo(secondLevel.get(o2.getEnv()));
if (cmp != 0) {
return cmp;
}
Map<String, Integer> thirdLevel = new HashMap<>();
thirdLevel.put("ORD", 1);
thirdLevel.put("DES", 2);
thirdLevel.put("INV", 3);
return thirdLevel.get(o1.getReport()).compareTo(thirdLevel.get(o2.getReport()));
}
请在您的foreach循环中尝试此操作。
答案 1 :(得分:0)
使用这个
if ($products){
foreach ($products as $product) : setup_postdata( $product );
echo get_the_title($product->ID));
// or echo $product->post_title;
endforeach;
wp_reset_postdata();
}
答案 2 :(得分:0)
这很奇怪,但是当您想与setup_postdata()
一起使用模板标签时,需要使用全局$post
变量。 setup_postdata()
实际上并未设置该变量,而是设置了一些相关的全局变量并运行the_post
操作。您可以看到here
要为每个模板函数调用在不传递ID等的情况下做您想做的事情,您需要像这样设置循环。
global $post;
foreach ( $products as $post ) {
setup_postdata( $post );
// Your code here.
}
wp_reset_postdata();// Reset the global $post variable and re-setup postdata.