2012-11-13 98 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