WordPressでショートコードを使う
制作会社や納期、予算によって、WPのエディタにがっつりhtml書き込むこともあるかと思います。
その中で、ホームのURLやお知らせなどの投稿一覧を表示させたい時は、ショートコード管理が便利です。
ショートコード管理をするにはadd_shortcodeを使用します。
例)
function sc_tcr() { return 'ところてん'; } add_shortcode('tcr', 'sc_tcr');
→[tcr]で「ところてん」表示
ホームURL
functions.phpに
function sc_homeurl() { return esc_url(homeurl('/')); } add_shortcode('homeurl', 'sc_homeurl');
エディタに
[homeurl]
でホームURL表示
テンプレートURL
functions.phpに
function sc_tmp() { return esc_url(get_template_directory_uri()); } add_shortcode('tmp', 'sc_tmp');
エディタに
[tmp]
でテンプレートURL表示
投稿一覧
functions.phpに
function shortcode_post_list($atts) { extract(shortcode_atts(array( //引数の値を取得 'num' => '3', //表示件数。ショートコード側で指定がなければここで設定した値になる。 'post_type' => 'post' //投稿タイプ。ショートコード側で指定がなければここで設定した値になる。 ), $atts)); global $post; $args = array( 'posts_per_page' => $num, //表示件数 'post_type' => $post_type, //投稿タイプ 'post_status' => 'publish' //投稿ステータス ); $posts_array = get_posts($args); $list = ''; //変数セット foreach($posts_array as $post): setup_postdata($post); //ループで表示したいものをここへ $list .= '<li>'; $list .= '<span class="date">'.get_the_time('Y/m/d').'</span><span class="ttl"><a href="'.get_permalink().'">'.get_the_title().'</a></span>'; $list .= '</li>'; endforeach; wp_reset_postdata(); return $list; } add_shortcode('post_list', 'shortcode_post_list');
エディタの埋め込みたい箇所へ
[post_list num="3" post_type="post"]
表示させる数とポストタイプは任意で。