私は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();