# WordPressでショートコードを作成する方法 URL: https://webrandum.net/wordpress-shortcode/ 公開日: 2019-04-17 更新日: 2020-04-05 カテゴリー: コーディング タグ: functions.php, WordPress 出典: Webrandum(著者: サイトウ マサカズ) ## ショートコードとは何か? WordPressの記事や固定ページの編集画面では、普通に文章を書いていくか、HTMLとして入力するかしかできません。 普通に文章だけ書くのであればそれで問題ありませんが、もし記事や固定ページ内で、関連記事を出したり、お問い合わせフォームを出したり、PHPの処理も関わってくるものを間に挟みたい時があります。 そんな時に使えるのがショートコードというブラケット(`[]`)で囲まれた文字列です。 ショートコードを予め設定しておいて、編集画面で入力 → 保存すると、プレビュー時にはそのショートコードが展開され、HTMLとなった状態で表示されます。 また、PHPの処理を行わなくても、よく使う定型文などをショートコードに設定しておけば、それで済むようになりますし、後から定型文を修正すれば全てのページで定型文が一括で変わる。なんてこともできます。 ## ショートコードの作り方 今回はとりあえず、ショートコードで定型文を呼び出してみましょう。 `functions.php`に`add_shortcode('ショートコード名', '呼び出す関数名');`を追加するだけです(変更する前に、必ずバックアップを取っておきましょう)。 ``` function shortcord_sample() { return 'これはショートコードで定型文を呼び出すサンプルです'; } add_shortcode('sample', 'shortcord_sample'); ``` コードを追加したら、保存して投稿の編集画面へアクセスして`[sample]`と入力して保存します。 ![ショートコードの使い方](https://webrandum.net/mskz/wp-content/uploads/2019/04/image_1-12.png) プレビューを表示すると、ちゃんと「これはショートコードで定型文を呼び出すサンプルです」という文章が表示されているはずです。 `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 '
'.$content.'
'; } add_shortcode('sample', 'shortcord_sample'); ``` 文字を囲みたい時は2つ引数を設定して、2つ目の引数が囲まれた文字列になります。 ![ショートコードで囲む](https://webrandum.net/mskz/wp-content/uploads/2019/04/image_2-11.png) あとは編集画面に移動して「`[sample]ショートコードで囲む[/sample]`」と入力してプレビューします。この時、HTML同様に閉じタグには「/(スラッシュ)」が必要なので忘れないように気をつけましょう。 すると、ちゃんと`
ショートコードで囲む
`というHTMLが生成されているはずです。