Cocoonのsitemapショートコードの表示順を変更する

Web

今朝、Cocoonのショートコードで作成したHTMLサイトマップを確認していて気付いたのだが、「投稿一覧」がアルファベット昇順で並んでいることに気付いた。
引数で対応することもできないようだったので、ショートコード自体を先制宣言することにしました。

なお、Cocoon以外のテーマでもこのショートコードは使えるため、プラグイン無しでHTMLサイトマップを作成したい人にもご活用いただけます。

設置するPHPコード

functions.phpに処理を追加します。

./wp-content/themes/cocoon-child-master/functions.php・・・
// sitemapショートコード改良
if (!function_exists('sitemap_shortcode')) {
    function sitemap_shortcode($atts, $content = null)
    {
        extract(shortcode_atts([
            'page'     => 1,
            'single'   => 1,
            'category' => 1,
            'archive'  => 0,
        ], $atts, 'sitemap'));

        $html = '<div class="sitemap">';
        if ($page) {
            $html .= '<h2>' . apply_filters('sitemap_page_caption', __('固定ページ', THEME_NAME)) . '</h2>';
            $html .= '<ul>' . wp_list_pages(['title_li' => '', 'echo' => 0]) . '</ul>';
        }
        if ($single) {
            $html .= '<h2>' . apply_filters('sitemap_single_caption', __('記事一覧', THEME_NAME)) . '</h2>';
            $html .= '<ul>' . wp_get_archives(['type' => 'postbypost', 'echo' => 0]) . '</ul>';
        }
        if ($page) {
            $html .= '<h2>' . apply_filters('sitemap_category_caption', __('カテゴリー', THEME_NAME)) . '</h2>';
            $html .= '<ul>' . wp_list_categories(['title_li' => '', 'echo' => 0]) . '</ul>';
        }
        if ($page) {
            $html .= '<h2>' . apply_filters('sitemap_archive_caption', __('月別アーカイブ', THEME_NAME)) . '</h2>';
            $html .= '<ul>' . wp_get_archives(['type' => 'monthly', 'echo' => 0]) . '</ul>';
        }
        $html .= '</div>';

        return $html;
    }
    add_shortcode('sitemap', 'sitemap_shortcode');
}
・・・

コード要所解説

元となるソースコードを参考にしつつ、ob_start関数は使わない方向で修正を行っています。

wp_get_archives(['type' => 'postbypost', 'echo' => 0])

で投稿一覧を出力しますが、「type」の設定を「alpha」から「postbypost」に変更することで、アルファベット昇順から公開日降順で表示されるようになります。
ついでなので見出し文言を「投稿一覧」から「記事一覧」に修正しています。

参考サイト

wp_get_archives関数などを標準出力ではなく、文字列取得できないか調べる際に大変参考になりました。
https://elearn.jp/wpman/

以上です。

コメント

  1. kamagra sans ordonnance canadienne

    kamagra generique comtat venaissin

  2. buying enclomiphene generic europe

    online order enclomiphene australia over the counter

  3. how to order androxal without rx online

    buy cheap androxal cheap real

  4. flexeril cyclobenzaprine drug class

    flexeril cyclobenzaprine on line cash on delivery

  5. how to buy dutasteride price in us

    cheapest buy dutasteride canada generic

  6. how to buy gabapentin generic available in united states

    how to buy gabapentin canada cost

  7. how to order fildena united kingdom

    buying fildena buy singapore

  8. how to order itraconazole cost insurance

    how to order itraconazole generic india

  9. how to order staxyn buy in the uk

    buying staxyn australia pharmacy

  10. how to order avodart purchase online uk

    buy cheap avodart generic when will be available

  11. buy xifaxan generic available in united states

    where can you get xifaxan with out a perskripion

  12. cheap rifaximin generic uk buy

    purchase rifaximin canadian online pharmacy

  13. generický kanadský kamagra co bez lékařského předpisu

    kamagra ceny walmart

タイトルとURLをコピーしました