2014.09.02   Web ,,,,,,

WPプラグインなしで投稿内に特定のカテゴリー記事を読み込む方法

WordPressでのサイト構築において、例えばsingle.php(単一ページ)やpage.php(固定ページ)などのphp上に、特定のカテゴリーやタグを指定して動的なページを生成することができる。しかしながら、その単一ページや固定ページから生成されるHTMLのエディタをつかったページ内では、phpをつかった動的なタグはつかえない。
もっとわかりやすくいえば、Wordpressのダッシュボードにある『投稿』から記事を投稿する場合、その投稿のHTMLエディタ上にphpを記述するとphpが二重に動作してしまうので、ページが表示されないのである。つまり、記事内で特定のカテゴリーやタグの記事を動的に読み込んで表示することはできないのである。
記事内に特定のカテゴリーやタグの記事を動的に読み込むことができれば、サイト自体のボリュームをもっと広げられると考えた末、そのような手段を教わることができたのでメモしておこうと思う。(プラグインによって制御することもできるようだが、実際に2,3個試したところうまく動作しなかったので、今回のfunctions.phpに記述する方法が一番確実であった。)

①functions.phpに、下記のコードを記述する。

//オリジナルショートコード
function my_list_category_func($atts) {
//デフォルトの変数
extract(shortcode_atts(array(
‘category’ => ”,
‘numberposts’ => ‘5’,
), $atts));

//特定カテゴリー情報を取得
$args = array(
‘cat’ => $category,//カテゴリーID
‘numberposts’ => $numberposts,//表示件数(-1で全件取得)
);
$your_posts = get_posts($args);
global $post;
$output = ”;
$output = “

    \n”;
    foreach ( $your_posts as $post ) : setup_postdata($post);
    $output .= ‘

  • ‘;
    $output .= ‘‘.get_the_title().’‘;
    $output .= “
  • \n”;
    endforeach; wp_reset_postdata();
    $output .= “

\n”;

return $output;
}
add_shortcode(‘MyListCategory’, ‘my_list_category_func’);

function my_list_tag_func($atts) {
//デフォルトの変数
extract(shortcode_atts(array(
‘tag’ => ”,
‘numberposts’ => ‘5’,
), $atts));

//特定タグ情報を取得
$args = array(
‘tag’ => $tag,//タグスラッグ
‘numberposts’ => $numberposts,//表示件数(-1で全件取得)
);
$your_posts = get_posts($args);
global $post;
$output = ”;
$output = “

    \n”;
    foreach ( $your_posts as $post ) : setup_postdata($post);
    $output .= ‘

  • ‘;
    $output .= ‘‘.get_the_title().’‘;
    $output .= “
  • \n”;
    endforeach; wp_reset_postdata();
    $output .= “

\n”;

return $output;
}
add_shortcode(‘MyListTag’, ‘my_list_tag_func’);

②カテゴリー(タグ)一覧を出力したい箇所に、下記のコード(ショートコード)を記述する。

カテゴリーの場合:


タグの場合:

*↑はカテゴリーID:1、表示件数5の場合
*全てを表示したい場合は nuberposts=-1
*タグの場合はIDではなく、スラッグを記述します。

上記の記述によって、記事内に特定のカテゴリーやタグの記事を動的に読み込むことができる。


槍の間合いもまだまだだな。