2018.05.04
WordPress
WordPressにショートコードを追加しメンテナンス性の高い記事を作成する
ワードプレスで記事を書くときに、他のページへのリンク、画像のパスなどを絶対パスで直接記述しているかたは多いのではないでしょうか。
またワードプレスがデフォルトで用意している、「メディアを追加」というボタンもメディアにアップロードした画像などを呼び出すのに絶対パスの画像のパスが出力されます。
これ自体は問題ないのですが、Webサイトを運用していく中で、ディレクトリ構造の見直し、ドメインの移転などが発生した場合に、全記事を修正する必要があります。
この作業はサイトを運営して記事が増えれば増えるほど厄介なものとなります。
今回はそういった場合に備えてWordPressにショートコードを追加し、活用する方法を紹介します。
WordPressのショートコードとは
WordPressのショートコードとは事前に設定しておいた関数を投稿記事の中で、短い単語で呼び出し、実行することができる機能です。
ショートコードの呼び出しには"[word]"といった書式で記述します。
ショートコードの追加は下記の様にfunction.phpに記述することで行います。
function aaa() { 関数 } add_shortcode('bbb', 'aaa');
引数を渡す場合は下記の様に記述します。
function aaa($atts) { extract(shortcode_atts(array( 'ccc' => '', 'ddd' => '', 'eee' => '', ), $atts)); 関数 } add_shortcode('bbb', 'aaa');
WordPressのトップページのURLを出力するショートコード
function shortcode_siteurl() { return get_bloginfo('url'); } add_shortcode('siteurl', 'shortcode_siteurl');
投稿記事で[siteurl]と記述することで呼び出すことが可能です。
こちらは管理画面の「設定 > サイトアドレス (URL)」に設定しているURLが出力されます。
テーマのURIを出力するショートコード
function shortcode_thema() { return get_template_directory_uri(); } add_shortcode('thema', 'shortcode_thema');
投稿記事で[thema]と記述することで呼び出すことが可能です。
現在有効化しているテーマのディレクトリのURIを出力します。
子テーマを使用している場合は親テーマのURIを出力します。
子テーマのURIを出力したい場合は下記の様なショートコードを設定し、[thema-child]と呼び出します。
function shortcode_themachild() { return get_stylesheet_directory_uri() ; } add_shortcode('thema-child', 'shortcode_themachild');
アップロードディレクトリへのパスを出力するショートコード
function shortcode_upload() { $upload_dir = wp_upload_dir(); return $upload_dir['baseurl']; } add_shortcode('upload', 'shortcode_upload');
投稿記事で[upload]と記述することで呼び出すことが可能です。
このままですと使い所が難しいのですが、ワードプレスに初期から用意されている、「メディアを追加」ボタンの動作を合わせてカスタマイズすることでよりメンテナンス性を高めることが可能です。
メディアを追加で出力するパスをショートコードに置き換える
function custom_media( $html ){ $upload_dir = wp_upload_dir(); $html = str_replace( $upload_dir['baseurl'], '[upload]', $html ); return $html; } add_filter('get_image_tag', 'custom_media');
上記は初期ではボタンを押したときに画像のアップロード先のパスを出力していたものをショートコードを出力することにより、運用途中で画像のアップロードディレクトリなどが変わっても画像へのパスが維持されます。
日頃の備えが重要
Webサイトを運用する中で、ドメインの変更やディレクトリ構造の変更が必要な場合がでてきます。この作業は意外と大変な作業なのですが、日頃からそれを意識したWebサイト運用をすることで、そのハードルを低くすることが可能です。
参考にしてください。