ホーム >  編集カテゴリー一覧 > めばえ いろいろ > PHP > ショートコード作成 > 

これが★★固定ページに特定カテゴリー

2015年10月12日 / ショートコード作成

wordpressの固定ページに特定のカテゴリ一覧を表示するには ・プラグインで固定ページ内にphpが使えるようにする ・phpファイルを作成して固定ページ内にインクルードさせる などの方法があります

情報源: 【wordpress】固定ページに特定カテゴリーの投稿一覧をプラグインなしで表示させる方法

 

1,functions.phpに追記

記事内/固定ページ内にphpファイル(任意のファイル)を読み込ませるには、記事内にショートコードを書きます。
まずはそのショートコードを有効にするために、テーマ内(hoge.net/wp-content/themes/piyo/)のfunctions.phpに以下を追記。

 

<?php

//記事内/固定ページ内にphpファイル(任意のファイル)を読み込ませる
function Include_my_php($params = array()) {
extract(shortcode_atts(array(
‘file’ => ‘default’
), $params));
ob_start();
include(get_theme_root() . ‘/’ . get_template() . “/$file.php”);
return ob_get_clean();
}

add_shortcode(‘myphp’, ‘Include_my_php’);
//ここまで

?>

 

phpファイルを作成

 

//例えば、カテゴリー:news guide の記事一覧を取得する場合
//news.php に下記を記述(ファイル名は任意の名前)
<div>
<?php $blog_posts = query_posts(‘category_name=news&showposts=5’);
foreach($blog_posts as $post): ?>
<p><?php echo get_post_time(‘Y.m.d’); ?></p>
<p><a href=”<?php echo get_permalink($post->ID); ?>”><?php echo $post->post_title; ?></a></p>
<?php endforeach; ?>
</div>

 

・4行目の category_name=〇〇 にカテゴリースラッグ

 showposts=〇 には表示させる件数を入れます。
・6行目の日付は、表示させたい書式で入れます。
・7行目は、記事タイトルを表示し、その記事へリンクさせる記述です。

 

★★ここで解決か? そのとおり!!
<div>
<?php $blog_posts = get_posts(‘category_name=guide&posts_per_page=-1′);
foreach($blog_posts as $post): ?>
<br>
<?php echo get_post_time($post->post_date); ?>
<br>
<a href=”<?php echo get_permalink($post->ID); ?>”><?php echo $post->post_title; ?></a>
<br>
<?php endforeach; ?>
</div>
 
2行目
【前】query_posts → 【後】get_posts
【前】showposts → 【後】posts_per_page
“query_posts”ってのはこのページによると非推奨らしい。
参考リンク:query_postsを捨てよ、pre_get_postsを使おう【追記あり】【報告あり】
というか非推奨云々抜きにして、query_postsだと記事タイトルだけでなく
記事の内容まで全部 ズラーっと出てしまうのでそこを変えた。
(ほしいのはタイトルだけだった)
“showposts”ってのもこのページによると非推奨らしい。理由は知らん。
参考リンク:showpostsで件数の指定ができません
 

 

★サイトのデザインによってhtmlを調整してください。これかな?

 

//カテゴリー:guide の記事一覧を取得する
//guide.php に下記を記述
<div>
<?php $blog_posts = query_posts(‘category_name=guide&showposts=100‘);
foreach($blog_posts as $post): ?>
<p><?php echo get_post_time(‘Y.m.d’); ?></p>
<p><a href=”<?php echo get_permalink($post->ID); ?>”><?php echo $post->post_title; ?></a></p>
<?php endforeach; ?>
</div>

★うむ~、リストの他に記事全部持ってくるのは?なぜ?なぜ?はい!上のメモで

 

 

 

固定ページ内にショートコードを記述

phpファイルをテンプレートディレクトリにアップロードできたら、一覧を表示したいページの記事内にショートコードを記述します。

読み込ませたいphpファイル(今回は news.php)を作成し、同ディレクトリ(例:hoge.net/wp-content/themes/piyo/)にアップロード。
固定ページ内の任意の場所に以下のショートコードを記述。(ファイル名が news.php の場合)


Warning: include(/home/hei60/www/theme/wp-content/themes/take777new/news.php): failed to open stream: No such file or directory in /home/hei60/www/theme/wp-content/themes/take777new/functions.php on line 196

Warning: include(): Failed opening '/home/hei60/www/theme/wp-content/themes/take777new/news.php' for inclusion (include_path='/home/hei60/www/theme/wp-content/plugins/backwpup/vendor/pear/archive_tar:/home/hei60/www/theme/wp-content/plugins/backwpup/vendor/pear/console_getopt:/home/hei60/www/theme/wp-content/plugins/backwpup/vendor/pear/http_request2:/home/hei60/www/theme/wp-content/plugins/backwpup/vendor/pear/mail_mime:/home/hei60/www/theme/wp-content/plugins/backwpup/vendor/pear/mail_mime-decode:/home/hei60/www/theme/wp-content/plugins/backwpup/vendor/pear/net_url2:/home/hei60/www/theme/wp-content/plugins/backwpup/vendor/pear/pear-core-minimal/src:/home/hei60/www/theme/wp-content/plugins/backwpup/vendor/pear/pear_exception:.:/usr/local/php/7.4/lib/php') in /home/hei60/www/theme/wp-content/themes/take777new/functions.php on line 196