アフィリエイターの 技術的な疑問やお悩みに お答えします!
質問
シルエット


WordPressでショートコードを自作しようと思っています。
ネットで調べて、やり方は理解したのですが、テーマがバージョンアップされたら、自分が作ったショートコードが消えてしまうと聞きました。
本当に消えてしまうのでしょうか。
何かいい方法はありませんでしょうか。

ケーちゃんケーちゃん

お答えします!

ネットで調べてみると、functions.phpを書き換えるように指示されていることが多いですね。
質問者様も、こちらを書き換える予定だと思います。

テーマのバージョンアップで配布されるファイルには、新しいfunctions.phpが含まれています。
そしてバージョンアップすることで、古いfunctions.phpは新しいものに上書きされます。
つまり、functions.phpに自分で書き加えたものは、消えてしまうのです。

テーマによっては、子テーマというものを用意しています。
子テーマは親テーマとは別にfunctions.phpを持っていて、こちらはバージョンアップしても上書きされないようになっています。
これからサイトを作るなら、賢威8のような子テーマを持っているテーマを使うといいですね。

テーマをバージョンアップしても、自作コードを動かす方法

テーマのアップデートをするとfunctions.phpが上書きされるのは、仕組み上回避することができません。

そのため、functions.php以外のものに自作コードを書き込むのが現実的な解決方法です。
おすすめはプラグインを利用する方法です。

でもプラグインとか難しそうって感じますよね。
実は、とても簡単です。

(※最後に自作用のプラグインファイルを用意してあります。ダウンロードして利用できます。)

次のコードをメモ帳などにコピペしてください。

  • <?php
  • /*
  • Plugin Name: self-made-plugin
  • Plugin URI:
  • Description: 自作プラグインテンプレート
  • Version: 1.0
  • Author: you
  • Author URI:
  • */
  • ?>
  • <?php
  • ?>
AFFS Simple Code Viewer
Copy

自作コードが長くなってしまってファイルを分けたい場合は、Plugin Nameを変更してください。
また、Description、Authorは自由に変更してもらって、問題ありません。

コピペをしたら、Plugin Nameと同じ名前のフォルダを作成して、UTF-8で保存します。

(1)フォルダを作成
フォルダを作成

(2)フォルダ内にUTF-8で保存
UTF-8で保存

UTF-8で保存しないと、文字化けすることがあります。
未確認ですが、古いパソコンだとメモ帳ではUTF-8を選択できないかもしれません。
その場合は、フリーソフトなどでUTF-8を利用できるエディタを探してみてください。

次に、フォルダごとZIP圧縮します。

zip圧縮をおこなう

こちらも古いパソコンでは標準で圧縮機能がない可能性があるので、その場合はフリーソフトを利用してみてください。

圧縮したファイルを、WordPressのプラグインの新規追加でアップロードして有効化します。

wordpress プラグイン アップロード

これで準備完了です。

今回は、すぐにコード編集をおこなえるようにzipファイルを用意しました。
こちらをご利用ください。

self-made-plugin-1.zip
(名前を付けてリンク先を保存してください)

自作コードを編集するには?

では実際にコードを追加してみましょう。

WordPress管理画面の左側メニューから、プラグイン編集をクリックします。
(最新のバージョンでは、プラグインエディターという名前に変更されているようです)

初回は、警告メッセージが表示されます。
「理解しました」を選択します。

プラグイン編集、初回確認

注意

※アクセス数が多いサイトで、いきなりコードを編集するのは危険です。
サブドメンなどで確認用のWordPressサイトを作成して、そちらで問題なく動作することを確認してから、本番のサイトを変更するようにしましょう。

次に、編集するプラグインを選択して、編集画面に表示します。

編集するプラグインを選択

次に、<?phpと?>の間に、次のコードを入力してみてください。

  • add_shortcode( 'hello', 'hello_func' );
  • function hello_func( $atts, $content = ""){
  • $a = shortcode_atts( array(
  • 'dare' => 'あなた',
  • ), $atts );
  • return $a['dare']."に". $content;
  • }
AFFS Simple Code Viewer
Copy

ファイルの更新ボタンを押して、エラーが表示されなければ成功です。

投稿画面を表示して、次のショートコードを入力してみましょう。

  • [hello dare="私"]ハローー!![/hello]
AFFS Simple Code Viewer
Copy

プレビューして、次のように表示されたら成功です。

いろいろ試してみてくださいね。