WordPress(Cocoon)の記事の中で、PHPを使いたいです。どうすればいいでしょう?投稿や固定ページでPHPを実行して、記事の中で動作するWebツールを作成したいです。
ショートコードを使ってphpファイルを実行
WordPressには「外部ファイルをショートコードで呼び出す」という方法があります。子テーマの functions.php にPHPプログラムを呼び出すための関数をショートコードとして定義します。このサイトでは、以下のように設置しました。
コード(functions.php)
子テーマルートのfunctions.phpに以下を追記します。
/*
* ショートコードを使ってphpファイルをinclude
*
* ex.) /サブフォルダー/test.php を実行 -->
* [inc_php file='test']
*
* @param array
* @return boolean
*/
function inc_my_php($param = array()) {
extract(shortcode_atts(array('file' => 'test'), $param));
ob_start();
include(STYLESHEETPATH . "/サブフォルダー/$file.php");
return ob_get_clean();
}
add_shortcode('inc_php', 'inc_my_php');
PHPファイルが増えるとファイルが煩雑になるので、 子テーマルートフォルダー直下に/サブフォルダーを作ります。 test.phpは /サブフォルダーに置きます。
ファイルの配置は「/子テーマルートフォルダー/サブフォルダー/test.php」となります。
使い方
- 記事の中で「カスタムHTMLブロック」を指定して
- []と書きます。
- 「/サブフォルダー/test.php」 が実行されます。
ショートコードを使ってPHPを実行する場合の制限について
その後、少しテストで使ってみました。$_POST変数や内部定数、ファイルの生成や削除など、特に問題ありません。
同一の記事内で、$_POSTからの引数を判定してページ遷移するなどもOKです。DB操作もOKだと思われます。(セッション管理やクッキーなどは未確認です。問題があれば追記します。)
ショートコード:利用上の注意点
「Google Search Console Team」さんから以下のメールが届きました。
前回のクロールで…貴サイトでは、以下の問題が検出されました。
・ コンテンツの幅が画面の幅を超えています
・ クリック可能な要素同士が近すぎます
・ テキストが小さすぎて読めません
「修正を検証」する必要がありますが、当該記事は非公開にしたところです。復活させてテストするのもどうかと思い、現時点では未検証です。おそらく以下のような原因であろうと想像してます。
PHPファイルをショートコードで呼び出して、ソースから安易なHTMLを出力?した場合、Googleさんから管理者宛にアラートが届くようです?
原因判明
「Google Search Console Team」さんから以下の確認メールが届きました。
貴サイト(https://lufa-tawasi.com/)で「モバイル ユーザビリティ」の問題が修正されたことを確認いたしました。今回確認した問題は「コンテンツの幅が画面の幅を超えています」です。
アイキャッチ画像に文字入れするWordPressベースのWebツールを作成したのですが、生成した画像サイズがの画面表示幅より大きいことが原因でした。
コメント