2013-05-02 156 views
1

我正在与多名艺术家合作的作品集网站上,每位艺术家都将拥有自己的博客。WordPress的:通过标签获取标签,其中标签包含名称

对于每位艺术家都有自己的博客,我决定让他们在他们制作的帖子中“标记”自己,在他们的投资组合页面上,我将用上述标签列出帖子。

页面的名字,是他们的名字,所以最初我以为只是使用:

<?php 
    $args=array('posts_per_page'=>2, 'tag' => $post->post_title); 
$wp_query = new WP_Query($args); 
?> 

会的工作,但似乎并没有拉起任何结果。然而,当我回复帖子标题和标签时,它们都显示完全相同。

所以我的下一个想法是将标签与reg表达式匹配。就像:

<?php 
if(preg_match("/tony/i",$post->post_title)){ 
    echo "Tony";  
} 
?> 

但我不知道如何将它工作到一个WP查询。

任何想法如何做到这一点,或者如果有更好的方法来达到相同的最终结果?

+0

奇怪了,我想你的第一个代码,它完美地工作。但是,当标签中引入空间时,它不起作用。 – 2013-05-02 15:10:33

+0

@ChristianVarga这是个大问题......这就是为什么我必须做我下面要做的事情。 – brbcoding 2013-05-02 15:11:05

+0

@brbcoding此外,这个主题似乎有一个很好的和安全的方法来获取标签slug:http://wordpress.org/support/topic/retrieve-posts-by-tags-with-spaces – 2013-05-02 15:25:20

回答

3

我最近被同样的问题困惑不解。我试图根据名字和姓氏的组合来显示文章,但是这仅仅通过使用tag参数不起作用。我实际上最终为我的使用tag_slug__and。以下是我想出了...

<?php 

$original_query = $wp_query; 
$args = array('tag_slug__and' => array(strtolower($first_name) . "-" . strtolower($last_name))); 
$wp_query = new WP_Query($args); 
if(have_posts()): 
    echo "<h3>News Tagged " . $first_name . " " . $last_name . "</h3>"; 
    while(have_posts()) : the_post(); 

     $title = get_the_title(); 
     $content = get_the_content(); 
     $date = get_the_date(); 

      //use the vars for something suuhhhhweeeeet! 



endwhile; 
endif; 
$wp_query = $original_query; 
wp_reset_postdata(); 
?> 

我用tag_slug__and是因为标签蛞蝓是由-分隔空间的小写字母标记的原因。这可能不是理想解决方案,只是感觉 hacky,但它确实工作。

+0

感谢您的回复!这工作得很好,但示例@ChristianVarga张贴完美! – 2013-05-02 16:14:11