Wordpress:按标签获取帖子,其中标签包含名称

时间:2013-05-02 14:57:59

标签: php tags wordpress-theming 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查询。

知道如何做到这一点,或者是否有更好的方法来获得相同的最终结果?

2 个答案:

答案 0 :(得分: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的原因是因为标记slug是小写标记,其中空格由-分隔。这可能不是理想的解决方案,只是感觉 hacky,但它确实有效。

答案 1 :(得分:-1)

我很好奇你为什么要使用标签,而不是使用作者页面模板和原生WordPress作者系统?没有标签,有很多方法可以做到这一点。如果您需要多位作者,请查看共同作者和插件。

http://wp.tutsplus.com/tutorials/how-to-create-a-wordpress-authors-page-template/

http://wordpress.org/extend/plugins/co-authors-plus/