在导航中显示WordPress页面的前几个单词

时间:2013-01-19 04:08:07

标签: php html wordpress nav

我想要显示一个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>

任何帮助将不胜感激

3 个答案:

答案 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()”函数来控制如何格式化每个帖子内容的预览 - 但是不应该只是简单地包含前几个单词!