查询后两次显示第一个自定义字段值(共几个)

时间:2016-02-09 作者:rpbtz

我有以下一段代码,它基于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值。有人能发现代码中的错误吗?

1 个回复
最合适的回答,由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 正确地如果其他人可以更准确地解释,请随时添加评论,我会相应地更新此答案。

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the