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が生成されているはずです。



WordPressでコンタクトフォームを設置したいならこれ!!Contact Form 7のインストール方法
思考したり情報整理したい時はMarkdown記法で文章を書き出そう!!Webデザイナーの情報整理術
Vue CLIのプロジェクト管理用のGUI機能から環境を構築する
Nuxt.jsでのページ遷移設定方法(Vue Routerやnuxt-link)|Nuxt.jsの基本
ソースコードをハイライトする軽量ライブラリ「Highlight.js」の導入方法と使い方
Visual Studio Codeで簡易的なローカルサーバーを起動して、コード保存時に自動でブラウザをリロードする拡張機能「Live Server」
Google Maps APIを使ってGoogle Mapsをウェブサイトに表示させる方法
Visual Studio Codeで開始タグを修正すると自動で閉じタグも修正してくれる拡張機能「Auto Rename Tag」
HTMLが書ければすぐ習得できるテンプレートエンジン「EJS」の基本的な書き方
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Googleカレンダーを便利に活用するための小技集(祝日だけを表示・月末の繰り返しイベントを追加)
Obsidianを使った「自己流PKM」で行う知識トレーニング
テキストエディタ・ノートアプリ関連のショートカットキーをKeyboard Maestroで統一する
Path Finderを使ってキーボードだけでファイル操作する方法(応用編)
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう