2012-11-13 95 views
1

下面是一個Wordpress函數,它爲菜單提取縮略圖。如果沒有縮略圖,我如何添加if/else以顯示「無縮略圖」?如果沒有縮略圖顯示「無縮略圖」

我曾嘗試:

$item_output .= apply_filters('menu_item_thumbnail' , (!isset($args->thumbnail) && $args->thumbnail)) ? 'no thumbnail' : ''; 

但是,這並沒有影響。對不起,如果這是一個愚蠢的問題,但我不知道PHP。

功能:

class Menu_With_Description extends Walker_Nav_Menu { 
    function start_el(&$output, $item, $depth, $args) { 
     global $wp_query; 


     // get user defined attributes for thumbnail images 
     $attr_defaults = array('class' => 'nav_thumb' , 'alt' => esc_attr($item->attr_title) , 'title' => esc_attr($item->attr_title)); 
     $attr = isset($args->thumbnail_attr) ? $args->thumbnail_attr : ''; 
     $attr = wp_parse_args($attr , $attr_defaults); 

     $item_output = $args->before; 

     // thumbnail image output 
     $item_output .= (isset($args->thumbnail_link) && $args->thumbnail_link) ? '<a' . $attributes . '>' : ''; 
     $item_output .= apply_filters('menu_item_thumbnail' , (isset($args->thumbnail) && $args->thumbnail) ? get_the_post_thumbnail($item->object_id , (isset($args->thumbnail_size)) ? $args->thumbnail_size : 'thumbnail' , $attr) : '' , $item , $args , $depth); 
     $item_output .= (isset($args->thumbnail_link) && $args->thumbnail_link) ? '</a>' : ''; 

     // menu link output 
     $item_output .= '<a'. $attributes .'>'; 
     $item_output .= $args->link_before . apply_filters('the_title', $item->title, $item->ID) . $args->link_after; 
     $item_output .= '</a>'; 

     // menu description output based on depth 
     $item_output .= ($args->desc_depth >= $depth) ? '<br /><span class="sub">' . $item->description . '</span>' : ''; 

     // close menu link anchor 
     $item_output .= $args->after; 

     $output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args); 
    } 
} 

這適用上述我的菜單:

add_filter('wp_nav_menu_args' , 'my_add_menu_descriptions'); 
function my_add_menu_descriptions($args) { 
    if ($args['theme_location'] == 'my_menu') { 
     $args['walker'] = new Menu_With_Description; 
     $args['desc_depth'] = 0; 
     $args['thumbnail'] = true; 
     $args['thumbnail_link'] = true; 
     $args['thumbnail_size'] = 'homeboxes'; 
     $args['thumbnail_attr'] = array('class' => 'nav_thumb my_thumb' , 'alt' => 'test' , 'title' => 'test'); 
     } 
    return $args; 
    } 
+0

有一個WordPress的函數名爲has_post_thumbnail,你試過了嗎? [Codex Page](http://codex.wordpress.org/Function_Reference/has_post_thumbnail) – martinczerwi

+0

我將如何編寫if/else來包含它?我不太明白所有'$ item_output。='語句的語法 – user1444027

回答

1

不要修改類。使用此過濾器來代替:

add_filter('menu_item_thumbnail', 'so_13368049_change_thumb', 10, 4); 

function so_13368049_change_thumb($thumb, $item , $args , $depth) 
{ 
    if('' == $thumb) 
     return 'No thumbnail'; 

    return $thumb; 
} 

如果你要修改的類,它應該是這樣的:
'NO THUMBNAIL',而不是''

$item_output .= apply_filters('menu_item_thumbnail' , (isset($args->thumbnail) && $args->thumbnail) ? get_the_post_thumbnail($item->object_id , (isset($args->thumbnail_size)) ? $args->thumbnail_size : 'thumbnail' , $attr) : 'NO THUMBNAIL' , $item , $args , $depth); 
+1

您,先生是超級巨星!謝謝!!! – user1444027