2016-06-09 68 views
0

我想在我的主頁上生成一個超鏈接使用最新帖子wp_get_recent_posts()in_category()。該網站沒有像博客文章摘錄那樣安裝,自定義字段正在使用基於slug的動態#id類別加載到自定義頁面模板中,並且所有工作都正常。所以,我試圖獲取最近發佈的帖子的類別,然後使用基於類別的正確URL生成鏈接,因爲這就是我可以區分他們所在的頁面的方式。WordPress的:使用如果其他與wp_get_recent_posts

我測試了if else之外的鏈接生成結構,它工作正常。但它不在if語句中工作:echo $before . $homeURL . "audio/" . "#" . $slug . $after;

我不是程序員,所以它可能是一個愚蠢的錯誤。我注意到的一件事是,如果我打印陣列$recent,它似乎沒有類別名稱或類別編號,即使我使用'category' => '2,3,4,5'指定$args陣列中的類別。

我設法感謝工作了這一點的人WordPress.org上的幫助,所以現在下面的代碼是正常使用has_category()功能

<?php 
    $args = array('numberposts' => '1', 'offset' => '0', 'orderby' => 'post_date', 'order' => 'DESC', 'post_status' => 'publish'); 
    $recent_posts = wp_get_recent_posts($args); 
    $home = home_url('/'); 
    $homeURL = esc_url($home); 
    $before = '<a href="'; 
    $after = '">dive in</a>'; 

    foreach($recent_posts as $recent){ 

     $slug = basename(get_permalink($recent["ID"])); 

     // if post is audio 
     if (has_category('audioz', $recent["ID"])) { 
      echo $before . $homeURL . "audio/" . "#" . $slug . $after; 
     } 
     // else if post is video 
     else if (has_category('videoz', $recent["ID"])) { 
      echo $before . $homeURL . "videos/" . "#" . $slug . $after; 
     } 
     // else if post is article 
     else if (has_category('articlez', $recent["ID"])) { 
      echo $before . $homeURL . "article/" . "#" . $slug . $after; 
     } 
     // else if post is zazzle link 
     else if (has_category('zazzle', $recent["ID"])) { 
      echo $before . $homeURL . "store/" . "#" . $slug . $after; 
     } 
    } 
?> 

回答

0

is_category()檢查,如果你目前所在的頁面是一個類別檔案頁面,更具體地說,如果是指定類別的檔案頁面。在所有情況下,這將返回false

我相信你實際上是尋找功能是in_category()和if語句會是這個樣子:

/* Needs to have post object ($recent) so it knows what to check */ 
if (in_category('audioz', $recent)) { 
    echo $before . $homeURL . "audio/" . "#" . $slug . $after; 
} 
+0

是的,我有這樣的,可是試了一下沒有在上面的例子中。我剛剛使用'$ recent'更改了我的代碼,並嘗試了'is_category'和'in_category',但都沒有成功。 – liquidRock

+0

我改變了我原來的帖子,以反映你仍然無法使用的建議。 – liquidRock