我有以下一段代码,它基于this question:
<?php
$game_titles = get_terms(\'game\');
foreach($game_titles as $game_title) {
wp_reset_query();
$args = array(\'post_type\' => \'release\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'game\',
\'field\' => \'slug\',
\'terms\' => $game_title->slug,
),
),
);
unset($game_titles);
$loop = new WP_Query($args);
if($loop->have_posts()) {
echo \'<h2>\' . $game_title->name . \'</h2>\';
echo \'<ul>\';
unset($game_title);
unset($args);
while($loop->have_posts()) : $loop->the_post();
echo \'<li><a href="\' . get_permalink() . \'">\' . get_the_title() . \'</a></li>\';
echo \'<p style="color:grey;font-size:11px;margin:0;">(\' .
$number = intval(get_post_meta(get_the_ID(), \'number\', true));
if($number > 1){
echo $number . \'x\';
}
$format_value = get_post_meta(get_the_ID(), \'format\', true);
foreach($format_value as $key => $val){
echo $val . \', \';
}
unset($val);
$version_value = get_post_meta(get_the_ID(), \'version_desc\', true);
foreach($version_value as $key => $val){
echo $val . \', \';
}
unset($val);
$color = get_post_meta(get_the_ID(), \'vinyl_color\', true);
if($color != \'Black\'){
if($color != \'\'){
echo \' / \' . $color;
}
}
$country_value = get_post_meta(get_the_ID(), \'country\', true);
if(! empty($country_value)){
echo \' / \' . $country_value . \', \';
}
else{
echo \' / \';
}
$year_value = get_post_meta(get_the_ID(), \'release_year\', true);
if(! empty($year_value)){
echo $year_value;
}
$catno_value = get_post_meta(get_the_ID(), \'catalog_no\', true);
if(! empty($catno_value)){
echo \' / \' . $catno_value;
}
echo \')</p>\';
endwhile;
echo \'</ul>\';
}
}
?>
现在我得到了
game
在分类法和每个术语下面,我将获得与该术语相关的每个帖子的标题和永久链接。这部分工作正常。
问题是我想在每个帖子标题/链接下面返回的一小段。出于某种原因,它会两次返回段落中的第一个值。
一、 e.对于读取以下内容的代码位:
$number = intval(get_post_meta(get_the_ID(), \'number\', true));
if($number > 1){
echo $number . \'x\';
}
如果$number=1,将显示
1
(即
$number
) 当它应该什么都不显示时。如果$number=2,将显示
22x
(即
$number . $number . \'x\'
) 何时应显示
2x
.
如果我完全使用$number注释掉代码位,它将返回\'Array\' . $val . \', \'
, 因为下一个代码位返回数组$val。
如果我注释掉段落中的所有php,就会得到著名的白色屏幕。大概是因为它试图显示一些不存在的值。
起初我认为这可能是一个错误the one explained here, 这就是为什么我在不同的位置放置unset(),但这似乎不会影响网站上显示的任何内容。
我可能遗漏了一些明显的东西,但我真的不明白为什么它会返回firstcoming值。有人能发现代码中的错误吗?
最合适的回答,由SO网友:rpbtz 整理而成
我设法修好了!我怀疑这与$number
, 而是echo
在它之前打电话。
我的初始代码如下所示(为了保持简单,我跳过了部分循环内容):
echo \'<p style="color:grey;font-size:11px;margin:0;">(\' .
$number = intval(get_post_meta(get_the_ID(), \'number\', true));
if($number > 1){
echo $number . \'x\';
}
echo \')</p>\';
如果
$number = 1
它会显示
$number
如果
$number > 1
) 它会显示
$number . $number . \'x\'
过了一段时间,我在这里查看代码时发现了一些错误。在我的第一次echo
打电话给我.
因此,可以在我的段落中添加以下代码。但在完成这一段时,我添加了一个新的echo
调用,而不是跟踪循环代码. \'</p>\'
.
我所做的是结束我最初的echo
调用而不是继续调用,所以要修复它,我只需更改一个字符并删除第一行中的空格,所以看起来像这样:
echo \'<p style="color:grey;font-size:11px;margin:0;">(\';
请注意,这段代码的结尾与我修复它之前的外观相比。我只是换了
.
具有
;
.
我对php了解不够,无法解释这种行为,尽管我认为这与没有结束/关闭echo
正确地如果其他人可以更准确地解释,请随时添加评论,我会相应地更新此答案。