Что не так с этим оператором PHP If, который использует оператор "больше чем"?
В этом случае я хочу, чтобы код работал только при наличии более 5 ответов.
<?php if ( bbp_topic_reply_count() > 5 ) : ?>
<?php query_posts('gdsr_sort=thumbs&post_type=bbp_reply&posts_per_page=2&post_parent='.$post->ID); ?>
<?php while ( have_posts() ) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php bbp_reply_author_link( array( 'type' => 'avatar' ) ); ?>
<?php bbp_reply_author_link( array( 'type' => 'name' ) ); ?>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
<?php endif; ?>
Ответы эффективно отображаются в коде ниже:
<h4><?php bbp_topic_reply_count(); ?></h4>
Но кажется, что это не работает в операторе if.
Какие-либо предложения?
4 ответа
Попробуйте использовать:
if ( bbp_get_topic_reply_count() > 5)
Как и во многих шаблонных функциях в различных библиотеках PHP, существует два варианта этой функции. Один, bbp_topic_reply_count()
, автоматически отображает счет, а не возвращает его. Другой, bbp_get_topic_reply_count()
на самом деле возвращает вам значение, а не повторяет его.
Могу ли я предложить использовать
if (bbp_get_topic_reply_count() > 5):
Причина этого заключается в том, что функция bbp_topic_reply_count()
не возвращает значение счетчика, а выводит это значение. Поэтому, когда вы сравниваете возвращаемое значение bbp_topic_reply_count, оно равно null, и это приводит к следующему утверждению
if (0 > 5) :
Что, конечно, всегда ложно.
Я действительно не знаю соглашений о кодировании WordPress, но я уверен, что вам не нужно открывать и закрывать тег php <?php
в каждой строке.
bbp_topic_reply_count()
не возвращает счетчик ответов. Это только повторяет это. Это означает, что вы не можете использовать его для сравнения, потому что функция не возвращает число для сравнения. Я не знаком с функциями bbpress, но вам придется найти альтернативу.