WordPress按标签查询相关帖子

发布于 2024-12-03 14:20:51 字数 1586 浏览 0 评论 0原文

我试图通过使用与当前帖子/页面相同的标签来查询相关帖子,但这也必须在我已经用来生成网格的代码格式内工作。

<?php
$c = 1; //init counter
$bpr = 3; //boxes per row
if(have_posts()) : while (have_posts()) : the_post(); ?>
<div class="postgrid" id="post-<?php the_ID(); ?>">

<div class="postthumb">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_post_thumbnail('grid-post-image'); ?></a><div class="borderthumb"></div><div class="posttitle"><h1><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h1>
   <p><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">Click for more</a></p></div>
  </div>
</div>

<?php
if($c == $bpr) :
?>
<?php
$c = 0;
endif;
?>
<?php
        $c++;
    endwhile;
endif;
?>

我发现了这个: Wordpress 按标签查询相关帖子

这看起来很有希望,但是当我尝试集成时它就像......

<?php
$c = 1; //init counter
$bpr = 3; //boxes per row
$test = "";
$posttags = get_the_tags();
$test = '';
$sep = '';
if ($posttags) {
    foreach($posttags as $tag) {
        $test .= $sep . $tag->name; 
        $sep = ",";
    }
}
query_posts('tag=' .$test . '&showposts=-1');  if(have_posts()) : while (have_posts()) : the_post(); ?>

不幸的是它没有产生任何东西。有什么帮助吗?

谢谢!我认为这两个脚本是冲突的,而且我不是 php 高手。

I am trying to query related posts by using the tags the same to the current post/page, but this also had to work within the code format I am already using to generate a grid.

<?php
$c = 1; //init counter
$bpr = 3; //boxes per row
if(have_posts()) : while (have_posts()) : the_post(); ?>
<div class="postgrid" id="post-<?php the_ID(); ?>">

<div class="postthumb">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_post_thumbnail('grid-post-image'); ?></a><div class="borderthumb"></div><div class="posttitle"><h1><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h1>
   <p><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">Click for more</a></p></div>
  </div>
</div>

<?php
if($c == $bpr) :
?>
<?php
$c = 0;
endif;
?>
<?php
        $c++;
    endwhile;
endif;
?>

I found this:
Wordpress Querying Related Posts by tag

Which seemed promising, but when I tried to integrate it like..

<?php
$c = 1; //init counter
$bpr = 3; //boxes per row
$test = "";
$posttags = get_the_tags();
$test = '';
$sep = '';
if ($posttags) {
    foreach($posttags as $tag) {
        $test .= $sep . $tag->name; 
        $sep = ",";
    }
}
query_posts('tag=' .$test . '&showposts=-1');  if(have_posts()) : while (have_posts()) : the_post(); ?>

it unfortunately generated nothing. any help?

Thanks! I think the two scripts are conflicting and I'm no php whizz.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦过后 2024-12-10 14:20:51

来自 query_posts 的规范

*您不应使用 query_posts() 创建辅助列表(例如,页面底部的相关帖子列表,或侧边栏小部件中的链接列表)。相反,您应该创建 WP_Query 的新实例或使用 get_posts()。*

尝试 get_posts()

    $posts = get_posts('tag=' .$test); foreach($posts as $post){ setup_postdata($post); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<? } ?>

您需要确保 $test 实际上是一个有效的标签或一组标签。

From the spec for query_posts:

*You should not use query_posts() to create secondary listings (for example, a list of related posts at the bottom of the page, or a list of links in sidebar widget). Instead, you should make a new instance of WP_Query or use get_posts().*

Try get_posts():

    $posts = get_posts('tag=' .$test); foreach($posts as $post){ setup_postdata($post); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<? } ?>

You'll need to make sure that $test is actually a valid tag or set of tags.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文