下面的代码(在foreach循环中)有时会返回某些内容,并且在传递相同的变量时有时会返回任何内容:
$term_id = 76;
$term_parent = 75;
if($term_id != 114 && $term_id != 115 && $term_parent != 83){
$term_link_content = 'something';
} else {
$term_link_content = 'nothing';
}
- 根据目前为止的回复,完整代码如下。我基本上是在第一个学期之后,不等于列出的任何ID。我通过为具有相同术语的不同帖子输出$ term_id和$ term_parent来检查循环,因此我可以看到if语句传递相同的值,但有时$ term_link_content变量有内容,有时候它是空的。
$posts = get_posts('post_type=products&product_categories=Best Sellers');
foreach($posts as $post){
$post_ID = $post->ID;
$terms = get_the_terms( $post_ID, "product_categories" );
$i = 0;
foreach($terms as $term){
$term_id = $term->term_id;
$term_parent = $term->parent;
$term_name = $term->name;
$term_slug = $term->slug;
if($term_id != 114 && $term_id != 115 && $term_parent != 83){
// only get the first
if(++$i > 1) break;
$term_text = $term_name;
$term_link = $url.'/shop/'.$term_slug;
$term_link_content = '<span class="term_text"><a class="'.$card_colour.'" href="'.$term_link.'">'.$term_text.'</a></span>';
} else { $term_link_content = ''; }
}
}
答案 0 :(得分:0)
我假设您在进入$term_id
循环之前定义$term_parent
和/或foreach
,并在循环体中执行其余代码。
然而,当你做这样的事情时:
foreach (getTerms() as $term) {
// perform an if-statement
}
这可能会改变您定义的变量,例如:
function getTerms() {
global $term_id, $term_parent;
// probably some database-connection that changes $term_id and $term_parent.
}
如果我错了,请纠正我,但我很确定Wordpress的功能是这样运作的,所以当你使用Wordpress,开发插件时或者当你使用WordP时,你不应该信任通用的全局变量使用面向功能(而不是面向对象)的框架。