プラグインなしで、HTMLサイトマップ(訪問者向)を作成しショートコードで呼び出す-wordpress

blog

サイトマップを作成して、呼び出す方法はいくつかあります。固定ページのテンプレートを利用する方法が、多くのサイトで紹介されています。

ここでは、前回の投稿で書いたショートコードで呼び出す方法を取りたいと思います。

固定・投稿ページに、.phpファイルをショートコードで呼び出す-wordpress
トップページを固定ページで新たに作成しようと思い、試行錯誤していましたが、固定・投稿ページにショートコードで.phpファイルを呼び出せたら便利だなと思って今回の投稿になりました。 一例として、今回の投稿ページの一番下に、当ブログのカテ...

 

固定・投稿ページでショートコードを使用できるようにする

上の「固定・投稿ページに、.phpファイルをショートコードで呼び出す-wordpress」で書いた、ショートコードが使用できるようにするコードを子テーマのfanction.phpに追記します。

追記済みであれば不要です。

 

サイトマップ(.html)を表示する.phpプログラム

以下のコードの内容で、.phpファイルを作成します。この.phpファイルを、ftpソフトなどでfunction.phpと同じ階層にアップロードします。

今回は簡易的なものでして、親カテゴリのみの表示です。
<div class="site-map">
<h3><a href="<?php echo home_url(); ?>">TOP</a></h3>
<h3>カテゴリ別</h3>
<?php
$args = array('exclude' => 6,
'orderby' => 'name',
'order' => 'DESC',
'parent' => 0,
);
$categories = get_categories($args);
foreach($categories as $category) { 
echo '<h4><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a></h4> ';
?>
<ul>
<?php
global $post;$myposts = get_posts('numberposts=3&category=' . $category->term_id);
foreach($myposts as $post) : setup_postdata($post);
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
<?php }; ?>
<h3>固定ページ</h3>
<ul>
<?php wp_list_pages('title_li='); ?>
</ul>
</div>

見出しタグ(H3,H4)は、お持ちのサイトに合うように設定します。

 

・カテゴリごとの表示記事数

'numberposts=3&category='

「3」の所を変更することで、表示数を変更できます。

 

・特定のカテゴリを除外

'exclude' => 6

「6」(カテゴリID)の所を変更することで、特定のカテゴリを除外できます。

複数カテゴリを除外する場合は

'exclude' => '1,2,3,4'

 

今回ファイル名は「sitemap-html.php」にしました。これをショートコードで呼び出すには([]は除いています。)

myphp file='sitemap-html'

 

実行結果

今回はテストですので、カテゴリ毎表示数3、カテゴリ「プロフィールにかえて」を除外しています。

上記コードでは、外枠(灰色)は出力されません。
 

wordpressの管理画面から、function.phpなどの.phpファイルを編集した場合、うまく動作しない時があります。

その際は、ftpソフトなどでいったん該当ファイルをローカルに保存して、そこで編集を行います。

編集した.phpを、ftpソフトなどで再度アップロードする事で正常動作する場合があります。

.phpを編集する際は、サクラエディタ が、エラーが少ないのではないかと思います。

上のエディタで保存する場合は、文字コード「UTF-8」、BOM「チェック無し」がエラーが少ないのでは無いかと思います。

sakuraediter

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