【问题标题】:Displaying a wordpress menu with submenu and thumbnail显示带有子菜单和缩略图的 wordpress 菜单
【发布时间】:2014-08-27 13:33:16
【问题描述】:

我整个早上都被困在这个问题上,我认为我并没有走得更远。

我正在尝试显示一个 wordpress 菜单,然后我想显示父菜单的所有子页面,所有子页面都有缩略图,我希望这些显示到。

我正在尝试将缩略图添加到子页面的 ing 标记中

这是我查看代码的方式

父菜单

<nav>
  <a href="#" >Sample Page 1</a>
  <a href="#" >Sample Page 2</a>
</nav>

子菜单

<ul class="sample_page_1">
  <li>
    <a href="#">
      <img src="image.jpg" alt="img05">
      <h4>Belts</h4>
    </a>
  </li>
  <li>
    <a href="#">
      <img src="image.jpg" alt="img05">
      <h4>Belts</h4>
    </a>
  </li>
</ul>

<ul class="sample_page_2">
  <li>
    <a href="#">
      <img src="image.jpg" alt="img05">
      <h4>Belts</h4>
    </a>
  </li>
  <li>
    <a href="#">
      <img src="image.jpg" alt="img05">
      <h4>Belts</h4>
    </a>
  </li>
</ul>

这是我到目前为止的代码,但它没有做它应该做的,它没有显示图像,我不知道怎么做?甚至不确定这是正确的方法吗?

<ul>
<?php
$menu_name = 'shoes';
    $items = wp_get_nav_menu_items($menu_name);
    foreach ( $items as $item){
        echo '<li><a href="#">'.$item->title.'</a></li>';
    }
?>
</ul>

谢谢

【问题讨论】:

  • wordpress 菜单中没有添加图片的选项。您指的是哪张图片?
  • 缩略图/特色图片
  • 在您的 sn-p 中,您可以使用 $item->object_id foreach ( $items as $item){ echo '
  • '.get_the_post_thumbnail($item->object_id).'
  • '; }

标签: php wordpress navigation


【解决方案1】:

我对此进行了测试,结果令人满意。这将影响所有菜单,因此请随意添加其他逻辑以仅针对某些菜单。

您可能需要对其进行样式设置以使其看起来更好一些,但只需将其放入您的 functions.php 文件中:

add_filter('walker_nav_menu_start_el', 'maiorano_generate_nav_images', 20, 4);
function maiorano_generate_nav_images($item_output, $item, $depth, $args){
    if(has_post_thumbnail($item->object_id)){
        $dom = new DOMDocument(); //DOM Parser because RegEx is a terrible idea
        $dom->loadHTML($item_output); //Load the markup provided by the original walker
        $img = $dom->createDocumentFragment(); //Create arbitrary Element
        $img->appendXML(get_the_post_thumbnail($item->object_id, 'thumbnail')); //Apply image data via string
        $dom->getElementsByTagName('a')->item(0)->appendChild($img); //Append the image to the link
        $item_output = $dom->saveHTML(); //Replace the original output
    }
    return $item_output;
}

【讨论】:

  • 谢谢,这个函数怎么调用?
  • 你没有。如果您使用wp_nav_menu 生成菜单,则会自动调用。
猜你喜欢
相关资源
最近更新 更多
热门标签