Weird problem on if statement

时间:2012-06-08 作者:Jaypee

我正面临一个奇怪的问题,我现在要解释什么。

Context

Plugins I\'m using: 自定义帖子类型UI/Advanced Custom Fields功能:我有一个名为“vendors”的自定义帖子类型。在这个帖子类型中,我在ACF上有几个自定义字段。其中一个字段称为“升级到主页”,设置为复选框。因此,这个想法很简单,如果选中该复选框,则在主页上显示该帖子。

所以这似乎很好,但当我试图将“突出显示的供应商”更改为另一个供应商时(未选中当前,选中期望以避免冲突),我发现我设置为特色的帖子没有显示,没有显示任何内容。

我开始测试,然后尝试其他供应商的帖子,发现这种行为是完全随机的,其中一些帖子正确发布到主页上,另一些则没有。我试图找出一种模式来确定可能的原因,但失败了。还尝试在发布良好的供应商中复制未能发布的供应商的设置,甚至设置与供应商仍在发布的内容完全相同的内容。

最后,我应该提到,我有一个页面,其中列出了某种“目录”,其中显示了所有供应商。我添加了一个简单的代码来检查“promote\\u to\\u homepage”输出是否正确,比如“如果选中了复选框,请打招呼”,然后发现主页上没有显示的帖子通过了目录页的测试。

我对这可能是什么想法都没有了,这就是为什么我在这里尝试,如果有人能给我一些帮助的话。

我在主页中使用的代码很简单:

<?php query_posts(\'post_type=vendors\');
while (have_posts()):the_post(); 
$featured = get_field(\'promote_to_homepage\', $post -> ID, true);
if ($featured){?><!-- show the content here -->
<?php }; endwhile; ?>
仅此而已。

提前感谢任何能在这方面帮助我的人。

胡安-

3 个回复
SO网友:Milo

没有第三个参数get_field, 可能是导致您出错的原因。

EDIT-

在您当前的代码中,如果最近的10篇帖子没有包含带有元键的帖子,那么您将什么也看不到,因为您只获得10篇帖子,然后对其进行过滤。任何没有指定帖子数量的查询都默认为您的阅读设置,您说的是10。

此外,如果这不是页面的主循环,则应该使用WP_Query 而不是query_posts. 如果它是页面的主循环,那么应该使用pre_get_posts 动作挂钩,而不是query_posts. 基本上,没有理由使用query_posts :)

通过WP_Query 是专门查询具有键的项,而不是在事实发生后过滤它们:

$args = array(
    \'posts_per_page\' => -1, // get all of them
    \'post_type\' => \'vendors\',
    \'meta_key\' => \'promote_to_homepage\'
);
$homepage_posts = new WP_Query( $args );
while( $homepage_posts->have_posts() ):
    $homepage_posts->the_post();
    // all your normal loop stuff here
    the_title();
endwhile;

SO网友:Pontus Abrahamsson

我看不出你在哪里检查这句话是不是真的。您应该有如下内容:

<?php 
query_posts(\'post_type=vendors\');
while ( have_posts() ):the_post(); 
  $featured = get_field( \'promote_to_homepage\', $post->ID, true );

  if ( $featured == 1 ){
    echo \'Checked\';
  } else {
    echo \'Not Checked\';
  }

endwhile; 

?>
if语句可以是$featured == true$feature == 1 就像我通常做的那样。

SO网友:Pontus Abrahamsson

啊,看了看法典,get\\u字段上没有true:http://www.advancedcustomfields.com/docs/functions/get_field/

$value = get_field( \'promote_to_homepage\', $post->ID );
if( $value ) {
  echo \'Checked\';
}
else {
 echo \'Not Checked\';
}

结束

相关推荐

Weird problem on if statement - 小码农CODE - 行之有效找到问题解决它

Weird problem on if statement

时间:2012-06-08 作者:Jaypee

我正面临一个奇怪的问题,我现在要解释什么。

Context

Plugins I\'m using: 自定义帖子类型UI/Advanced Custom Fields功能:我有一个名为“vendors”的自定义帖子类型。在这个帖子类型中,我在ACF上有几个自定义字段。其中一个字段称为“升级到主页”,设置为复选框。因此,这个想法很简单,如果选中该复选框,则在主页上显示该帖子。

所以这似乎很好,但当我试图将“突出显示的供应商”更改为另一个供应商时(未选中当前,选中期望以避免冲突),我发现我设置为特色的帖子没有显示,没有显示任何内容。

我开始测试,然后尝试其他供应商的帖子,发现这种行为是完全随机的,其中一些帖子正确发布到主页上,另一些则没有。我试图找出一种模式来确定可能的原因,但失败了。还尝试在发布良好的供应商中复制未能发布的供应商的设置,甚至设置与供应商仍在发布的内容完全相同的内容。

最后,我应该提到,我有一个页面,其中列出了某种“目录”,其中显示了所有供应商。我添加了一个简单的代码来检查“promote\\u to\\u homepage”输出是否正确,比如“如果选中了复选框,请打招呼”,然后发现主页上没有显示的帖子通过了目录页的测试。

我对这可能是什么想法都没有了,这就是为什么我在这里尝试,如果有人能给我一些帮助的话。

我在主页中使用的代码很简单:

<?php query_posts(\'post_type=vendors\');
while (have_posts()):the_post(); 
$featured = get_field(\'promote_to_homepage\', $post -> ID, true);
if ($featured){?><!-- show the content here -->
<?php }; endwhile; ?>
仅此而已。

提前感谢任何能在这方面帮助我的人。

胡安-

3 个回复
SO网友:Milo

没有第三个参数get_field, 可能是导致您出错的原因。

EDIT-

在您当前的代码中,如果最近的10篇帖子没有包含带有元键的帖子,那么您将什么也看不到,因为您只获得10篇帖子,然后对其进行过滤。任何没有指定帖子数量的查询都默认为您的阅读设置,您说的是10。

此外,如果这不是页面的主循环,则应该使用WP_Query 而不是query_posts. 如果它是页面的主循环,那么应该使用pre_get_posts 动作挂钩,而不是query_posts. 基本上,没有理由使用query_posts :)

通过WP_Query 是专门查询具有键的项,而不是在事实发生后过滤它们:

$args = array(
    \'posts_per_page\' => -1, // get all of them
    \'post_type\' => \'vendors\',
    \'meta_key\' => \'promote_to_homepage\'
);
$homepage_posts = new WP_Query( $args );
while( $homepage_posts->have_posts() ):
    $homepage_posts->the_post();
    // all your normal loop stuff here
    the_title();
endwhile;

SO网友:Pontus Abrahamsson

我看不出你在哪里检查这句话是不是真的。您应该有如下内容:

<?php 
query_posts(\'post_type=vendors\');
while ( have_posts() ):the_post(); 
  $featured = get_field( \'promote_to_homepage\', $post->ID, true );

  if ( $featured == 1 ){
    echo \'Checked\';
  } else {
    echo \'Not Checked\';
  }

endwhile; 

?>
if语句可以是$featured == true$feature == 1 就像我通常做的那样。

SO网友:Pontus Abrahamsson

啊,看了看法典,get\\u字段上没有true:http://www.advancedcustomfields.com/docs/functions/get_field/

$value = get_field( \'promote_to_homepage\', $post->ID );
if( $value ) {
  echo \'Checked\';
}
else {
 echo \'Not Checked\';
}

相关推荐