[PHP] 部品化したphpファイルを複数回呼び出す時に、その中のcssファイルの読み込みを最初の1回だけにする方法

PHP

私はWordPressのショートコードを使って、スニペットを大量に作っています。スニペットの中にcssファイルの読み込みを含んでいることが多いのですが、同じスニペットを複数回呼び出す時、cssファイルも複数回読み込むのは無駄なので、その点を修正しました。

解決方法

ショートコードで読み込むソースコードをクラス化して、初回だけtrueのstaticプロパティを用意する。

ソースコード

PHP 7.4

// my-snippet-1.php
class MySnippet1 {
    public static bool $first_flag = true; // 初回だけtrueのstaticプロパティ
    public int $id;

    public function __construct($id) {
        $this->id = $id;
        if(self::$first_flag) {
            $this->loadCss();
            self::$first_flag = false;
        }
    }

    private function loadCss() {
        echo '<link rel="stylesheet" href="/my-snippet/my-snippet-1/style.css">';
    }

    public function getSource(): string {
        return '<div class="my-class-1">' . $id . '</div>';
    }
}
// functions.php
// 省略
include_once '$_SERVER['DOCUMENT_ROOT'] . '/my-snippet/my-snippet-1/my-snipet-1.php';
$my_snippet_1 = new MySnippet1($id);
echo $my_snippet_1->getSource();

広告