我以前使用过$count,但从未遇到过此问题。我不能让它工作。我的php背景有限,请耐心等待!以下是$count设置代码:
<?php $count = 0; ?>
<?php if ( have_posts() ) : // Start the Loop ?>
<?php $count++; ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( \'content\', get_post_format() ); ?>
<?php endwhile; ?>
<?php endif; ?>
内容内。php-下面是我要做的:
<?php if ($count == 1) { ?>
<section class="stories-title">
<img src="<?php bloginfo(\'stylesheet_directory\'); ?>/assets/stories-title.jpg" />
</section>
<?php ;} ?>
有人能向我解释一下发生了什么事吗?据我所知,我遇到了一个未定义的变量问题,但我不知道如何在不破坏$计数的情况下解决这个问题。。。条件语句和内容必须在同一个文件中才能使用$count吗?
更新:问题(如下所述)与变量作用域有关-使用template\\u part时,$count变量不会结转。以下是固定代码:
functions.php
// remember number (so we can count posts)
/**
* Remember a number.
*
* @param int|FALSE $add A number to add, or FALSE to reset the counter to 0 (zero).
* @return int
*/
function wpse_count( $add = 0 )
{
static $counter = 0;
if ( FALSE === $add )
$counter = 0;
else
$counter += (int) $add;
return $counter;
}
index.php
<?php wpse_count( FALSE ); ?>
<?php if ( have_posts() ) : // Start the Loop ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php wpse_count( 1 ); ?>
<?php get_template_part( \'content\', get_post_format() ); ?>
<?php endwhile; ?>
<?php endif; ?>
content.php
<?php if (count_posts() == 1) { ?>
<section class="stories-title">
<img src="<?php bloginfo(\'stylesheet_directory\'); ?>/assets/stories-title.jpg" />
</section>
<?php ;} ?>
Additional Solution
有关此问题更简单的解决方案,请参见下面的不同答案。只需要使用wp\\u查询
<?php if ( $wp_query->current_post == 0 ) { ?>
不需要$计数器。
最合适的回答,由SO网友:fuxia 整理而成
变量$count
只能在当前函数的范围内访问。所以不管里面发生什么get_template_part()
无法知道该变量。
您可以使用全局变量,该变量可以在任何地方访问$GLOBALS[\'count\']
. 但这样做可能会与插件或其他代码发生冲突。
我建议为functions.php
:
/**
* Remember a number.
*
* @param int|FALSE $add A number to add, or FALSE to reset the counter to 0 (zero).
* @return int
*/
function wpse_count( $add = 0 )
{
static $counter = 0;
if ( FALSE === $add )
$counter = 0;
else
$counter += (int) $add;
return $counter;
}
你可以用这个函数记住你想要的任何数字。在您的示例中,应该如下所示:
<?php
// Reset the counter
wpse_count( FALSE );
if ( have_posts() ) : // Start the Loop
while ( have_posts() ) :
the_post();
wpse_count( 1 );
get_template_part( \'content\', get_post_format() );
endwhile;
endif;
?>
在模板零件文件中,您可以打印值而不添加任何内容:
echo wpse_count();
TwentyEleven的示例
content-status.php
<?php
the_content( __( \'Continue reading <span class="meta-nav">→</span>\', \'twentyeleven\' ) );
echo \'Number: \' . wpse_count();
?>