我有以下一段代码,它基于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 正确地如果其他人可以更准确地解释,请随时添加评论,我会相应地更新此答案。