我正在尝试创建一个包含图像,标题和说明的菜单。
到目前为止,解密和标题工作得很好,所以,我找到了这个插件
https://wordpress.org/plugins/menu-image/
效果非常好并显示图像+标题,但不显示描述。
所以,我想我需要以某种方式显示描述而不会丢失图像。
我创建了一个自定义的navwalk,但似乎我不能只调用附加的图像。查看插件的代码无法找到任何有用的东西。
有什么想法吗?有没有人这样做过?
到目前为止,我的导航员看起来像这样:
<?php
class Ext_Walker extends Walker {
var $tree_type = array('post_type', 'taxonomy', 'custom');
var $db_fields = array('parent' => 'menu_item_parent', 'id' => 'db_id');
function start_el(&$output, $object, $depth = 0, $args = array(), $current_object_id = 0) {
$classes = "";
foreach ($object->classes as $cl){
$classes.=" $cl";
}
$output .="<div class='col-lg-15 bottom-pad'>
<div class='vertical_item'>
<div class='col-lg-60'>
<div class='$classes'></div>
</div>
<div class='clear'></div>
<div class='desc_vertical'>
<h2 class='vertical_title'>{$object->title}</h2>";
if($object->post_content != ""){
$output .="<p class='item_description'>{$object->post_content}</p>";
}else{
}
$output .="</div>";
$output .="<a href=".$object->url."><button class='btn btn-link'>View More</button></a>";
}
function end_el(&$output, $object, $depth = 0, $args = array()) {
$output.='</div></div>';
}
}
?>
答案 0 :(得分:1)
当WordPress创建菜单时,它正在创建包含
形式链接的菜单项<a>Some Title</a>
沃克通过&#34; the_title&#34;过滤。你引用的插件做同样的事情。
因此,如果不开发自己的Walker扩展程序,至少有两种可能性可以实现:
1)扩展插件
由于插件使用的是the_title过滤器,您可以添加该类型的过滤器来添加描述(插件已添加图像)。所以
function add_description( $title, $id ) {
if ( 'nav_menu_item' == get_post_type( $id ) ) {
$title = '<span class="title">' . $title . '</span>;
$title .= '<span class="desc">' . description from wherever you get it . '</span>;
}
return $title;
}
add_filter( 'the_title', 'add_description', 10, 2 );
这会将内部文本更改为链接标题和说明。您可能需要检查帖子类型,因为在其他情况下也会调用过滤器。
2)仅使用过滤器
您可以使用上述过滤器的变体来添加图像和描述,从而避免使用插件。例如:
function add_img_and_desc( $title, $id ) {
if ( 'nav_menu_item' == get_post_type( $id ) ) {
// Get the image for the menu item (say in $img)
$title = $img . '<span class="title">' . $title . '</span>;
$title .= '<span class="desc">' . description from wherever you get it . '</span>;
}
return $title;
}
add_filter( 'the_title', 'add_img_and_desc', 10, 2 );
如何获得图像将取决于您的方法。例如,它可以像基于标题的switch语句一样简单。