2013-05-02 205 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