WordPressで投稿スラッグを取得するテーマ関数
WordPressで投稿スラッグを取得するためのテーマ関数を作成してみました。
投稿スラッグとは各記事に付けられる固有の名前で、主に記事のURIの一部として利用します。テーマの作成にあたり、XHTMLのIDに投稿スラッグを利用したかったのですが、そういった関数はないようだったので次のような関数を作成しました。
- /wp-content/themes/テーマ名/functions.php
<?php function the_name($before = '', $after = '', $echo = true) { $post_name = get_the_name(); if (strlen($post_name) == 0) { return; } $post_name = $before . $post_name . $after; if ($echo) { echo $post_name; } else { return $post_name; } } function get_the_name($id = 0) { $post = &get_post($id); $post_name = $post->post_name; if (!empty($post->post_password)) { if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { $output = get_the_password_form(); return $output; } } return apply_filters('the_name', $post_name); } ?>
パスワードで保護されたら記事のチェック処理が関数間で異なっているのを発見しましたが、今は見なかったことにします。新しいと思われるコードに合わせてあります。使い方はWordPressの標準的なテーマ関数と同じです。記事の投稿スラッグを出力するには次のようにします。
- /wp-content/themes/テーマ名/index.php等
… <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> … <div id="Entry-<?php the_name(); ?>"> … </div> … <?php endwhile; ?> <?php endif; ?> …
なお、特別な処理は行っていないので、URLエンコードされた投稿スラッグもそのまま出力されます。加工が必要な場合は、the_nameをフックとしたフィルタ関数を登録するようにするといいと思います。
トラックバック (0)
この記事へのトラックバックはまだありません。
コメント (0)
この記事へのコメントはまだありません。