1

困っているようです。ワードプレスの投稿ページ テンプレートに 3 つ以上の投稿がある場合、特定のテキストを表示する必要があります。(ループシングル.php)

関連するカテゴリの投稿の総数が 3 以上であるかどうかを検出できるように、十分に動的である必要があります。

これは、カテゴリテンプレートページ(archive.php)でうまく機能するコードを見つけましたが、投稿テンプレートで使用するとめちゃくちゃになります。

<?php
$count = 1;
if (have_posts()) : while(have_posts()): the_post(); ?>

<!-- Less than 3 post - nothing shown at all -->

<?php $count++;
  endwhile; endif; ?>
<?php if ($count > '3') { ?>

<div> This line shown when 3 or more posts are in current post category</div>

<?php } ?>

注: loop-single.php テンプレート ファイルでこれを機能させようとしています。

どんな助けでも大歓迎です、ありがとう


上記のソリューションを含むようにコードが更新されました。いくつかの構文エラーを修正しましたが、T-STRING エラーがスローされるようになりました: 解析エラー: 構文エラー、予期しない T_STRING

ここに私の完全なページコードがあります:

<?php /* Start loop */ ?>
<?php while (have_posts()) : the_post(); ?>
<?php roots_post_before(); ?>
<article <?php post_class() ?> id="post-<?php the_ID(); ?>">
<?php roots_post_inside_before(); ?>
<header>
<h1 class="entry-title"><?php the_title(); ?></h1>

<!-- POST DATE STAMP -->
<div class="post-top">
<div class="date-stamp">
<b><?php the_time('M d'); ?></b>
</div>
</header>

<div class="entry-content">
<?php the_content(); ?>
</div>

<footer>
<hr />


<?php
$cat = get_query_var('cat');
$posts = get_posts(array('category' => $cat));
if(count($posts) >= 3)
{

<!-- POST FOOTER RELATED CONTENT (2 HORIZONTAL) --> 
<h5>Featured: <?php $cats=get_the_category(); echo $cats[0]->cat_name; ?></h5>
<div id="foot-container">
<?php echo do_shortcode("[catlist categorypage=yes comments=yes numberposts=2 class=horizontal-2 offset=2 orderby=date order=desc thumbnail=yes thumbnail_size=75 thumbnail_class=footer-thumb title_tag=p title_class=footer-link comments_tag=p      comments_class=comment-count]"); ?>
<div style="clear:both;"></div>
</div>
<hr />

}
else
{
Why hello there LESS than three
}
?>



</footer>
<?php comments_template(); ?>
<?php roots_post_inside_after(); ?>
</article>
<?php roots_post_after(); ?>
<?php endwhile; /* End loop */ ?>
4

1 に答える 1

2

これで始められるはずです:

<?php
$cat = get_query_var('cat');
$posts = get_posts(array('category' => $cat));
if(count($posts) >= 3)
{
    //CODE EXECUTED IF THREE OR MORE POSTS EXIST IN CURRENT CATEGORY
}
else
{
    //CODE EXECUTED IF LESS THAN THREE POSTS EXIST IN CURRENT CATEGORY
}
?>

追加情報:失敗した理由は、ループが 1 回の反復しか実行していなかったためです。単一の投稿がループを複数回通過することはありません....それは単一の投稿だからです。このアプローチが行うことは、既存のカテゴリを取得し、一致するカテゴリ内のすべての Wordpress 投稿をクエリすることです。PHP の count 関数を使用すると、特定のパラメーターで見つかった投稿の正確な数が得られます。

警告: 上記のスクリプトは、一致するカテゴリのすべての投稿を見つけるわけではありません。その特定のカテゴリの最新の 5 つだけです。一致するすべての投稿の実際の合計が必要な場合は、1 行を次のように変更します。

$posts = get_posts(array('category' => $cat, 'numberposts' => -1));

コードの更新:この行:

<article <?php post_class(); ?> id="post-<?php the_ID(); ?>"> //missing semicolon after post_class()

そして、このブロック:

<?php
$cats=get_the_category();
$posts = get_posts(array('category' => $cats[0]->cat_ID));
if(count($posts) >= 3)
{
?> 
<!-- POST FOOTER RELATED CONTENT (2 HORIZONTAL) --> 
<h5>Featured: <?php echo $cats[0]->cat_name; ?></h5>
<div id="foot-container">
<?php echo do_shortcode("[catlist categorypage=yes comments=yes numberposts=2 class=horizontal-2 offset=2 orderby=date order=desc thumbnail=yes thumbnail_size=75 thumbnail_class=footer-thumb title_tag=p title_class=footer-link comments_tag=p comments_class=comment-count]"); ?>
<div style="clear:both;"></div>
</div>
<hr />
<?php
}
else
{
echo 'Why hello there LESS than three';
}
?>
于 2012-04-26T02:20:43.410 に答える