0

各ページの最初の数語が下にある 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>

どんな助けでも大歓迎です

4

3 に答える 3

0

もう1つのオプションは、カスタムループを作成し、それを表示するテーマの「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()は、カスタムナビゲーションに投稿情報を入力するための主要なプレーヤーです。次に、nav ID、nav_postクラス、およびh2 / pに適切なcssを追加するだけで、準備完了です。おそらく、特定の数の投稿の後でループをハードストップしたいと思うでしょう-すべての投稿がナビゲーションにリストされることを望んでいるとは思えません!

各投稿のコンテンツのプレビューをフォーマットする方法を制御するには、「formatPreview()」関数を個別に作成する必要がありますが、最初の数語を単純に置き換えるのは難しいことではありません。

于 2013-01-19T04:53:06.433 に答える
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が、これはほとんどのユースケースで機能します。

それを行う別の方法は、カスタムウォーカーを使用することです

于 2013-01-19T04:34:35.983 に答える