【WordPress】ショートコード:記事内でPHPを使うには?

WordPress

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」となります。

使い方

  1. 記事の中で「カスタムHTMLブロック」を指定して
  2. []と書きます。
  3. 「/サブフォルダー/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ツールを作成したのですが、生成した画像サイズがの画面表示幅より大きいことが原因でした。

コメント

タイトルとURLをコピーしました