【サンプル付き】WordPressでプラグインを使わないショートコードの作り方を解説-初級編
WordPressのショートコードとは何? この記事ではWordPressで自作ショートコードの作り方とその使い方を解説しています。 WordPressのショートコードとは、記事や直接PHPファイルに埋め込む事でプログラムが実行して目的の情報を差し込むことが
この記事のレベル
以前の記事でショートコードとは何か?を解説させていただきました。 WordPressのショートコードとは何?
この記事ではWordPressで自作ショートコードの作り方とその使い方を解説しています。 WordPressのショートコードとは、記事や直接PHPファイルに埋め込む事でプログラムが実行して目的の情報を差し込むことが
まだお読みでない方は是非、以下の記事を読んでから中級編をお読みください。【サンプル付き】WordPressでプラグインを使わないショートコードの作り方を解説-初級編
中級編では、より実践的なショートコードを実際のソースを交えて解説いたします。
functions.phpを利用しますので、万が一に備えてバックアップを取るなどの対策を行ってください。
以下の関数は、記事の中にパーマリンクを取得できるショートコードです。
記事IDの部分には記事IDを入れてくださいね。
[pagelink id=記事ID]
function code_pagelink ( $atts ) {
extract( shortcode_atts( array(
'id' => '',
), $atts ) );
return get_permalink( $atts[id] );
}
add_shortcode('pagelink', 'code_pagelink');
例として、広告バナーの形式は以下のHTMLとします。
広告用バナーは2種類として、1つのショートコードで表示を切り替えられるものをイメージしています。
<!-- 広告1 -->
<div class="ad_banner">
<a href="URL 1" class="txt_link" target="_blank" rel="noopener noreferrer">
<img src="画像URL 2" alt="広告画像" width="" height="" loading="lazy">
</a>
</div>
<!-- 広告2 -->
<div class="ad_banner">
<a href="URL 2" class="txt_link" target="_blank" rel="noopener noreferrer">
<img src="画像URL 2" alt="広告画像" width="" height="" loading="lazy">
</a>
</div>
[ad_banner ad=1]
[ad_banner ad=2]
function ad_banner_func($atts)
{
//広告1のHTMLをセット
$ad_banner_1 = <<<EOF
<!-- 広告1 -->
<div class="ad_banner">
<a href="URL 1" class="txt_link" target="_blank" rel="noopener noreferrer">
<img src="画像URL 2" alt="広告画像" width="" height="" loading="lazy">
</a>
</div>
EOF;
//広告2のHTMLをセット
$ad_banner_2 = <<<EOF
<!-- 広告2 -->
<div class="ad_banner">
<a href="URL 2" class="txt_link" target="_blank" rel="noopener noreferrer">
<img src="画像URL 2" alt="広告画像" width="" height="" loading="lazy">
</a>
</div>
EOF;
if($atts['ad'] == 1) {
//ショートコードでad=1を指定した場合
return $ad_banner_1;
}elseif($atts['ad'] == 2) {
//ショートコードでad=2を指定した場合
return $ad_banner_2;
}
}
add_shortcode('ad_banner', 'ad_banner_func');
様々なブログでよく見かける、「この記事は〇分で読めます」をショートコード化して呼び出せるものをイメージしています。
人それぞれ文字を読むスピードは異なりますが、「1分間に200字」を基準に関数を組立てました。
<div class="reading_time">
<p>この記事は<span>〇</span>分で読めます</p>
</div>
[reading_time]
function article_reading_time()
{
$content = get_post_field( 'post_content', get_the_ID() );
$word_count = str_word_count( strip_tags( $content ) );
$readingtime = ceil($word_count / 200); // 1分あたりの読む速度を200文字と仮定
$output = '
';
$output .= '
この記事は' . $readingtime . '分で読めます
';
$output .= '
';
return $output;
}
add_shortcode('reading_time', 'article_reading_time');
こちらも様々なブログでよく見かけますね。
実装方法はjavascript、PHPなどいくつかありますがここはPHPで実装してみましょう。
<div class="toc">
<ul>
<li>
<a href="#アンカー">h2 見出し</a>
</li>
<li>
<a href="#アンカー">h3 小見出し</a>
</li>
<li>
<a href="#アンカー">h3 小見出し</a>
</li>
<li>
<a href="#アンカー">h2 見出し</a>
</li>
<li>
<a href="#アンカー">h3 小見出し</a>
</li>
<li>
<a href="#アンカー">h2 見出し</a>
</li>
</ul>
</div>
[toc]
function generate_toc_shortcode()
{
$post = get_post();
$content = $post->post_content;
preg_match_all('/(<h2.*?>.*?<\/h2>|<h3.*?>.*?<\/h3>)/i', $content, $matches);
if (!empty($matches[0])) {
$toc = '<div class="toc"><ul>';
foreach ($matches[0] as $match) {
$tag = strip_tags($match);
$anchor = sanitize_title($tag);
$toc .= '<li><a href="#' . $anchor . '">' . $tag . '</a></li>';
}
$toc .= '</ul></div>';
return $toc;
}
return '';
}
add_shortcode('toc', 'generate_toc_shortcode');
ショートコードでよくあるトラブルとその対応についていくつか紹介します。
エディッタには入力しているのにショートコード自体が表示されない場合、ショートコードの登録(add_shortcode)自体は問題ありません。
恐らく、functions.phpへの記述ミスがある可能性があります。
ショートコードがそのまま表示される場合は、ショートコードの登録(add_shortcode)自体に問題があります。
その場合は、
add_shortcodeが実行されているか?
ショートコードの登録タグ名は正しく入力しているか?
add_shortcode関数の使い方は正しいか?
500エラーが発生する場合は、functions.phpにショートコードの登録名を変えてみる。
functions.phpの他の記述の一部を削除してしまっていないか?
プラグインとの干渉はしていないか?
いかがでしたでしょうか?
中級編では、より実践的に使えるショートコードを4つ紹介いたしました。
HTMLの構造やcssは目的に合わせて変更し、是非トライしてみてください。
WordPressのショートコードとは何?
この記事ではWordPressで自作ショートコードの作り方とその使い方を解説しています。 WordPressのショートコードとは、記事や直接PHPファイルに埋め込む事でプログラムが実行して目的の情報を差し込むことが ショートコードをもっと深く理解しよう
前回のショートコードに関する記事では、より実践的なショートコードの使用例を紹介させていただきました。
まだお読みでない方は是非、以下の記事を読んでから上級編をお読みください。
[get_post_data id="【サンプル付き】WordPressでプラグインを使わないショートコードの作り方を解説-初級編
【サンプル付き】WordPressでプラグインを使わないショートコードの作り方を解説-上級編