我想要显示一个WordPress导航栏,其下面是每页的前几个单词。
这就是我目前所拥有的:
<?php wp_list_pages('title_li=&link_after=<span>FIRST FEW WORDS HERE</span>'); ?>
我希望输出如下:
<li><a href="#">Home<span>Welcome to the website</span></a></li>
任何帮助将不胜感激
答案 0 :(得分:0)
我唯一能想到的就是这样做:
使用wp_get_pages
获取所有标题(或您想要的标题),然后使用查询访问数据库,该查询将使用标题获取每个帖子。因此,对于返回get_pages
的数组中的每个标题,您会收到相应的帖子。在SQL或PHP中,使用substring
方法获取前几个单词,然后显示您想要的内容。
这只是逻辑,我对代码有点生疏,所以我不想让你感到困惑。如果你没有得到它,我会试试......
答案 1 :(得分:0)
我认为没有办法通过将params传递给wp_list_pages
来将额外的文本放入锚点。但是,您可以对其进行过滤并使用preg_replace
。例如......
add_filter('wp_list_pages', function($data) {
return preg_replace('/(<a[^>]+[^<]+)<\/a>/si', '\\1<span>FIRST FEW WORDS HERE</span></a>', $data);
});
虽然我使用preg_replace()
你也可以(也可能应该)使用DomDocument
,但这适用于大多数用例。
另一种方法是使用custom walker
答案 2 :(得分:0)
另一种选择是创建一个自定义循环并将其添加到主题中要显示它的“index.php”文件中。
一个快速举例说明它的外观:
<div id="nav"><ul>
<!-- start the loop-->
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<li class="nav_post">
<a href="<?php the_permalink(); ?>"><?php the_title(); ?>
<span><?php formatPreview(the_content()); ?></span></a>
</li>
<!-- stop the loop-->
<?php endwhile; else: ?>
<p>No posts!</p>
<?php endif; ?>
</ul></div>
the_permalink(),the_title()和the_content()是使用帖子信息填充自定义导航的关键人物。然后只需为导航ID,nav_post类和h2 / p添加适当的css,你就可以了!在一定数量的帖子之后你可能想要坚持停止循环 - 我怀疑你想要在导航中列出每个帖子!
你必须单独制作“formatPreview()”函数来控制如何格式化每个帖子内容的预览 - 但是不应该只是简单地包含前几个单词!