web-dev-qa-db-ja.com

wp_get_archives:アンカータグの内側にスパンを入れる

wp_get_archivesの組み込み引数を使ってアンカー要素をHTMLで囲むことができる方法を私は知っています。アンカーテキストの折り返し範囲を追加するためにアンカーの内容を変更する方法はありますか?その意図は、カテゴリ上の年間アーカイブのリスト(つまり投稿が存在する年の自動リスト)にそれを使用することです。

前:

<ul>
    <li><a href="xx">2014</a></li>
    <li><a href="xx">2015</a></li>
    <li><a href="xx">2016</a></li>
</ul>

後:

<ul>
    <li><a href="xx"><span>2014</span></a></li>
    <li><a href="xx"><span>2015</span></a></li>
    <li><a href="xx"><span>2016</span></a></li>
</ul>
5
physalis

アンカータグの外側にまたがる

beforeafter引数( PHP 5.4+ )を探していると思います。

wp_get_archives(
    [
        'before' => '<span>',
        'after'  => '</span>'
    ]
);

<span>タグを<a>タグで囲む場合は、次のようにします。

<li><span><a href="xx">Link text</a></span></li>

アンカータグの内側にまたがる

アンカータグの内側に入れたい場合は、

<li><a href="xx"><span>Link text</span></a></li>

それならあなたはget_archives_linkフィルタを使ってあなたのニーズへのリンクを再構築することができます。

対応するテーマファイルを( PHP 5.4+ )で変更します。

// Add a custom filter
add_filter( 'get_archives_link', 'wpse_get_archives_link', 10, 6 );

// Archive
wp_get_archives(
    [
        'type'   => 'yearly', // For yearly archive
        'format' => 'html'    // This is actually a default setting
    ]
);  // EDIT the arguments to your needs (I'm not showing the <ul> part here)

// Remove the custom filter
remove_filter( 'get_archives_link', 'wpse_get_archives_link', 10, 6 );

現在のテーマディレクトリのfunctions.phpファイルで、フィルタコールバックが次のように定義されている場所。

function wpse_get_archives_link(  $link_html, $url, $text, $format, $before, $after )
{
    if( 'html' === $format )
         $link_html = "\t<li>$before<a href='$url'><span>$text</span></a>$after</li>\n";

    return $link_html;
}

アンカータグの内側にスパンを追加したところ。

7
birgire