2011-01-14 2 views
2

Я пытаюсь запросить список сообщений с теми же тегами, что и текущее сообщение, просматриваемое в WordPress. Я подумал, что если бы я мог запросить список тегов для текущего сообщения, передайте его в переменную, а затем передайте эту переменную в аргумент query_posts, он выполнит эту работу. Кажется, он работает для одного из тегов в сообщении, но я явно делаю что-то неправильно. Вот пример кода, который я написал до сих пор:Wordpress Querying Похожие сообщения по тегу

<?php 
$posttags = get_the_tags(); 
if ($posttags) { 
foreach($posttags as $tag) { 
    $test = ',' . $tag->name; 
} 
} 
query_posts('tag=' .$test . '&showposts=-1'); while (have_posts()) : the_post(); ?> 
     <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> 
<?php endwhile; wp_reset_query(); ?> 

Любое пояснение о том, что я делаю неправильно было бы очень признателен.

ответ

1

Вы сбрасываете $test каждый раз.

Попробуйте

<?php 
$test = ""; 
$posttags = get_the_tags(); 
if ($posttags) { 
foreach($posttags as $tag) { 
    $test .= ',' . $tag->name; 
} 
} 
$test = substr($test, 1); // remove first comma 
query_posts('tag=' .$test . '&showposts=-1'); while (have_posts()) : the_post(); ?> 
     <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> 
<?php endwhile; wp_reset_query(); ?> 
+2

Два различных ответов и оба работали! Вы оба рок-звезды. Правда, колыбельные рок-звезды! Еще раз спасибо. –

1

Вы должны накапливать теги в тестовой переменной,

<?php 
$posttags = get_the_tags(); 
$test = ''; 
$sep = ''; 
if ($posttags) { 
    foreach($posttags as $tag) { 
     $test .= $sep . $tag->name; 
     $sep = ","; 
    } 
} 
query_posts('tag=' .$test . '&showposts=-1'); while (have_posts()) : the_post(); ?> 
<p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> 
<?php endwhile; wp_reset_query(); ?> 
+0

Спасибо, спасибо, спасибо. Теперь я могу исправить пятно на стене, от которого я бил голову! –

Смежные вопросы