wordpressでカスタムをしているとPHPを使いたいことがよくあるのですが、phpをファイルで読み込むのが今のところMY BESTです。
function.phpに直接書き込む方法にもチャレンジしていましたが、プログラム文書への理解度が足りなく時間がかかっていましたが、この「phpファイルを別で作成してショートコードで呼び出し」かなりのスピードアップとなっています。
投稿でPHPを使いたい
投稿ページではPHP文は使用できないというのがwordpressでのセキュリティの為にとなっています。しかしこのスキルを手に入れたことで、かなり自由度が上がりました。
なぜダメなの?という疑問が出ましたので調べてみましたが、以下のサイトやwordpressフォーラムなどで書かれています。
大ざっばにまとめるとこんな感じでしょうか…
- phpは簡単にIDやPassなどのwordpressのコアな部分を、ネットで表示させてしまう危険性がある。
- wordpressでは適切なやり方が用意されているので、phpを学んでいくことでリスクに近づく可能性を減らすことができる。
phpファイル作成
windows標準の「メモ帳」は使わずにテキストエディタを使用してください。「terapad」など様々なものがあって、今は「Mery」を使用させていただいてます。
使い勝手の良いphp文として今回はスマホとPCで別の広告を表示したい文を表示します。またこちらのphpの説明は次の機会に行います。
「●●●.php」と●●●部分に任意の名前を付けて保存してください。エンコードはUTF-8(BOM無し)で保存しています。
<?php if ( wp_is_mobile() ) : ?>スマホで表示したい文章をこちらに記入
<?php else: ?>PCで表示したい文章はこちらに
<?php endif; ?>
FileZillaでアップロード
phpファイルを任意の場所にアップロードします。新たにフォルダを作成して、その中にphpファイルを入れる。そのフォルダごと子テーマファイルの中にアップロードすると後々の役に立ちます。
FileZillaは次のfunction.php編集でも使用しますのでそのままにしておいてください。
function.phpの編集
先ほど使用していたFileZillaで子テーマのfunction.phpをダウンロードしコピペでバックアップを作成して下さい。function.phpはwordpressのweb画面で編集していると、ミスがあった時に真っ白になって焦るので、FileZillaを使いましょう。
function.phpに今回書き込んだのはこちらです。
//ショートコードを使ったphpファイルの呼び出し方法 function my_php_Include($params = array()) { extract(shortcode_atts(array('file' => 'default'), $params)); ob_start(); include(STYLESHEETPATH . "/betup/$file.php"); return ob_get_clean(); } add_shortcode('myphp', 'my_php_Include');
表示したい場所に挿入文
投稿内の好きな箇所に以下のショートコードを差し込むとphpファイルが呼び出されて表示されます。いかにもphpを使いこなしているようで良い気分になりますね。
Warning: include(/home/himaster/soricity.com/public_html/wpress/wp-content/themes/cocoon-child-master/●●●.php): Failed to open stream: No such file or directory in /home/himaster/soricity.com/public_html/wpress/wp-content/themes/cocoon-child-master/functions.php on line 34
Warning: include(): Failed opening '/home/himaster/soricity.com/public_html/wpress/wp-content/themes/cocoon-child-master/●●●.php' for inclusion (include_path='.:/opt/php-8.1.29/data/pear') in /home/himaster/soricity.com/public_html/wpress/wp-content/themes/cocoon-child-master/functions.php on line 34
テンプレートファイルでも使えます
投稿内で便利に動くショートコードですが、wordpressをカスタマイズをしているうえでテーマ内で使用したいこともあるはずです。そんなときは以下を使用してください。