WordPressでショートコードを作成する方法

ショートコードとは何か?
WordPressの記事や固定ページの編集画面では、普通に文章を書いていくか、HTMLとして入力するかしかできません。
普通に文章だけ書くのであればそれで問題ありませんが、もし記事や固定ページ内で、関連記事を出したり、お問い合わせフォームを出したり、PHPの処理も関わってくるものを間に挟みたい時があります。
そんな時に使えるのがショートコードというブラケット([])で囲まれた文字列です。
ショートコードを予め設定しておいて、編集画面で入力 → 保存すると、プレビュー時にはそのショートコードが展開され、HTMLとなった状態で表示されます。
また、PHPの処理を行わなくても、よく使う定型文などをショートコードに設定しておけば、それで済むようになりますし、後から定型文を修正すれば全てのページで定型文が一括で変わる。なんてこともできます。
ショートコードの作り方
今回はとりあえず、ショートコードで定型文を呼び出してみましょう。
functions.phpにadd_shortcode('ショートコード名', '呼び出す関数名');を追加するだけです(変更する前に、必ずバックアップを取っておきましょう)。
function shortcord_sample() {
return 'これはショートコードで定型文を呼び出すサンプルです';
}
add_shortcode('sample', 'shortcord_sample');コードを追加したら、保存して投稿の編集画面へアクセスして[sample]と入力して保存します。

プレビューを表示すると、ちゃんと「これはショートコードで定型文を呼び出すサンプルです」という文章が表示されているはずです。
add_shortcode('ショートコード名', '呼び出す関数名');の「ショートコード名」の方がブラケットで囲むテキスト、「呼び出す関数名」の方はfunctionの後に設定する関数名と一致させる必要があります。
関数内はreturnを使ってテキストを返しているだけです。
functions.php内は、PHPが使えるので、ここで色々と処理をして、最終的にreturnで値だけ返して上げて、それを表示する。というのがショートコードの仕組みになります。
引数を渡す
今のままだと、同じ定型文が出てくるだけですが、引数を渡すことで、別の定型文を出せたりもします。
function shortcord_sample($num) {
if ($num = 1) {
return '引数に1が設定されています';
}
return 'これはショートコードで定型文を呼び出すサンプルです';
}
add_shortcode('sample', 'shortcord_sample');
あとは編集画面で[sample 1]と入力してプレビューすると「引数に1が設定されています」と表示され、[sample 2]や[sample]と入力すると「これはショートコードで定型文を呼び出すサンプルです」と表示されます。
ショートコードで囲む
文字を囲んで、その囲んだテキストに対して何か行う。みたいな事をしたいときもあります。
そんな時は下記のようなコードを書いてあげます。
function shortcord_sample($num ,$content) {
return '<div class="sample">'.$content.'</div>';
}
add_shortcode('sample', 'shortcord_sample');文字を囲みたい時は2つ引数を設定して、2つ目の引数が囲まれた文字列になります。

あとは編集画面に移動して「[sample]ショートコードで囲む[/sample]」と入力してプレビューします。この時、HTML同様に閉じタグには「/(スラッシュ)」が必要なので忘れないように気をつけましょう。
すると、ちゃんと<div class="sample">ショートコードで囲む</div>というHTMLが生成されているはずです。



js-cookieでウェブサイトのダークモード表示設定をユーザーごとに保存しておく方法
Visual Studio CodeでToDoコメントを一覧で表示する拡張機能「Todo Tree」
SourceTreeで環境設定の「カスタムアクション」「アップデート」「高度な設定」が選択できない
gulp 4.0から新しく加わったseriesとparallelについての備忘録
Vue CLIのtitleタグやmetaタグの設定方法
アクセス解析ツールの定番!!Googleアナリティクスの登録方法
resizeイベントを使用する場合は、iOS Safariでの挙動に注意
ブラウザでこれ以上スクロールできない場合の挙動を制御する「overscroll-behavior」プロパティ
HTMLが書ければすぐ習得できるテンプレートエンジン「EJS」の基本的な書き方
コーディング時のclass名の省略はどこまでして良いのか?「img / btn / ttl / desc / thumb」
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
AirPodsで片耳を外しても再生が止まらないようにする方法
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」
Macのターミナルでパスワード付きのZIPファイルを作成する方法
MacBook Proでディスプレイのサイズ調整をして作業スペースを広げる
SteerMouseの「自動移動」機能で保存ダイアログが表示されたら自動でデフォルトボタンへカーソルを移動させる
iPhoneでタッチが一切効かなくなった場合に強制再起動する方法