1

我不仅在 Google 上进行了搜索,还在其他地方(包括此处)进行了搜索,但找不到任何可以帮助解决此问题的内容。

这是问题所在。我有一个基于标签而不是类别的相关帖子片段,我在 WordPress 主题中使用它,并且我已经使用了很长时间,并且效果非常好。这是:

        $tags = wp_get_post_tags($post->ID);
    $tagIDs = array();
    if ($tags) {
        $tagcount = count($tags);
        for ($i = 0; $i < $tagcount; $i++) {
            $tagIDs[$i] = $tags[$i]->term_id;
        }
    $args=array(
    'tag__in' => $tagIDs,
    'post__not_in' => array($post->ID),
    'showposts'=>mytheme_option( 'related_count' ),
    'ignore_sticky_posts'=>1
    );
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
        echo '<h4>'. __('Other Posts You May Be Interested In', "themename"). ':</h4><ul>';
        while ($my_query->have_posts()) : $my_query->the_post(); ?>

            <li class="imglink">

                <!-- post loop stuff goes here -->

            </li>

<?php endwhile;
echo '</ul>';
}
else {
echo '<h4>'. __('Other Posts You May Be Interested In', "themename"). ':</h4>
'. __('<p>There are no related posts at this time.</p>', "themename"). '';
}   
}
$post = $original_post;
wp_reset_query();

就像我说的那样,它真的很好用。如果帖子具有相同的标签,则显示:

您可能感兴趣的其他帖子:显示具有相同标签的帖子

但问题是:如果给单个帖子一个标签,而没有其他帖子具有相同的标签,则显示如下:

您可能感兴趣的其他帖子:目前没有相关帖子。

现在,如果没有为帖子分配标签,则绝对不会显示任何内容。应该显示相关帖子的 div 是空的,但应该说没有相关帖子。

我一直在寻找解决方案并尝试了许多不同的方法来纠正这个问题,但我似乎无法理解它。有人可以帮助我获得:

您可能感兴趣的其他帖子:目前没有相关帖子。

如果帖子没有标签,则显示。非常感谢您的任何帮助,并在此先感谢您。

4

1 回答 1

0

我相信问题来自函数顶部的条件:

$tags = wp_get_post_tags($post->ID);

$tagIDs = array();
if ($tags) {
    # All of your code is in this conditional, 
    # if there are no tags, nothing will happen
}

如果没有找到该帖子的标签,它会跳过您的所有代码并且不呈现任何内容。代码底部的 else 语句仅在当前帖子有标签但没有其他帖子包含该标签时才会执行。

根据要求编辑示例 - 您需要有 2 个 else 条件来回显无帖子内容,一个用于如果没有标签,一个用于如果有标签但未找到帖子:

$tags = wp_get_post_tags($post->ID);

$tagIDs = array();
if ( count( $tags ) > 0) {
    // setup $tagIDs and perform query...

    if( $my_query->have_posts() ) {
        // Echo out posts.
    } else {
        echo '<h4>'. __('Other Posts You May Be Interested In', "themename"). ':</h4>
        '. __('<p>There are no related posts at this time.</p>', "themename"). '';
    }
} else {
    echo '<h4>'. __('Other Posts You May Be Interested In', "themename"). ':</h4>
    '. __('<p>There are no related posts at this time.</p>', "themename"). '';
}

那应该这样做。但是,我可能会建议将内容包装到一个函数中。然后,您可以在函数末尾回显无帖子内容,如果找到帖子,则“返回”。那你就不会重蹈覆辙了。

于 2012-07-28T19:07:43.057 回答