WordPress以外のWebサイトにWordPressサイドバーを表示する方法
私の最新プロジェクトであるDevGrow Discussionsに取り組んでいる間に、私は WordPressのサイドバーをWordPress以外のサイトに埋め込む - 具体的に bbPressフォーラム. 私はさまざまなウィジェットを使って人気のある投稿やその他の動的コンテンツを表示するので、単にHTMLをコピーして貼り付けるだけでは不十分です。結局、これには2つの方法しかありません。
- あなたを含める wp-load.php あなたのアプリケーションでファイルを作成し、プラグイン関数にアクセスするためにWordPress全体をロードしてください。
- 単純なキャッシュを使用してサイドバーをHTML形式で保存し、それを他のアプリケーションに含めてから、新しいコンテンツが公開されたときに必要に応じて再構築します。
それが十分明白でない場合、最初のオプションはデータベースクエリに関して非常に高くつき、あなたのサイトをかなり遅くすることができます。 2番目の方法では、実装に少し手間がかかりますが、パフォーマンスの面で競合はありません。.
WordPressサイドバーをキャッシュする
関数を書く前に、私たちがやろうとしていることを正確に理解する必要があります。私たちの目標は サイドバーをテキストファイルにキャッシュする そして 投稿を公開するたびにキャッシュを更新する, テーマを変更するか、サイドバーウィジェットを変更してください。私たちは別のアプリケーションでサイドバーを表示するために私たちのキャッシュを使うことを計画しているので、私たちは何の悪影響もなく簡単にキャッシュを削除することができる必要があります。.
これを効率的に達成するために、 キャッシュファイルのログを作成する そして これを使ってキャッシュをクリアするかどうかを決定します。. もしそうなら、次回のWordPressサイトへのアクセス時に実際のキャッシュファイルが上書きされ、両方のアプリケーションで適切なサイドバーが常にレンダリングされるようになります。.
関数を作成する
始めるために、あなたのテーマを開いてください functions.php ファイルを作成し、それに次の関数を追加します。
function cache($ task、$ cacheFile、$ cacheTime = 21600)グローバル$キャッシュ; //ファイルとディレクトリを設定します。$ cacheDir = TEMPLATEPATH。 "/ cache"; $ cacheFileName = $ cacheDir。 "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir。 "/ cache-log.txt"; //(!is_dir($ cacheDir))mkdir($ cacheDir、0755); //キャッシュディレクトリが存在しない場合は作成する//(file_exists($ cacheLogFile))$ cacheLog = unserialize(file_get_contents($ cacheLogFile)); //現在の状態でキャッシュファイルのログを作成します。そうでなければ$ cacheLog = array(); if($ task == 'start')//キャッシュが存在し、6時間以内で、削除キューにない場合はそれを保持します。それ以外の場合は(file_exists($ cacheFileName)&&(time() - filemtime) ($ cacheFileName)) < $cacheTime && $cacheLog[$cacheFile] == 1) $cache = false; else $cache = true; ob_start(); elseif($task == 'end' && $cache) // If caching, save file contents and update log file_put_contents($cacheFileName,ob_get_contents()); ob_end_flush(); $cacheLog[$cacheFile] = 1; file_put_contents($cacheLogFile,serialize($cacheLog)); elseif($task == 'purge') // Set cache to delete and update log $cacheLog[$cacheFile] = 0; file_put_contents($cacheLogFile,serialize($cacheLog)); function cache_purge() $cacheDir = TEMPLATEPATH."/cache"; $cacheLogFile = $cacheDir."/cache-log.txt"; if(file_exists($cacheLogFile)) $cacheLog = unserialize(file_get_contents($cacheLogFile)); else $cacheLog = array(); foreach($cacheLog as $key=>$ value)$ cacheLog [$ key] = 0; file_put_contents($ cacheLogFile、serialize($ cacheLog));
これらの最初の機能, キャッシュ, キャッシュを機能させるための鍵は、ファイルのどこで呼び出すかに応じて、この関数は正しいファイルとディレクトリを設定し、キャッシュを構築する必要があることを確認します。そうであれば、出力を保存してキャッシュログを更新します。この関数はPHPの出力バッファリングを使用して、生成されたHTMLをテキストファイルに保存します。.
2番目の関数はすべてのキャッシュファイルを削除するために使われ、既存のWordPressフックに追加するのに役立ちます。それを使うと、テーマが更新されるたび、投稿が保存されるたび、またはサイドバーウィジェットが更新されるたびにキャッシュがクリアされるようにすることができます。 functions.php:
add_action( 'switch_theme'、 'cache_purge'、10); add_action( 'publish_post'、 'cache_purge'、10); add_filter( 'widget_update_callback'、 'cache_purge'、10);
フックの完全なリストについては、WordPressプラグインAPIリファレンスを調べてください。.
サイドバーを設定する
機能の準備が整ったので、サイドバーのキャッシュを開始できます。あなたを開く sidebar.php この行をファイルの先頭に追加します。
この関数は必要なサイドバーをキャッシュし始めます。そうでなければ何もしません。 PHPの出力バッファリング関数が機能する方法のため、ファイルの末尾でもバッファを閉じる必要があります。この行を同じファイルの一番下に追加します。
これら2行を追加したら、ブログを更新してください。ブラウザには何も表示されませんが、 /キャッシュ あなたのテーマフォルダ内のディレクトリとあなたはで始まる2つのファイルを見るべきです キャッシュ-.
キャッシュを使う
キャッシュファイルを作成したので、それにアクセスできるすべてのアプリケーションでそれを使用できます。あなたは簡単にこれを行うことができます include_once しかし、安全を期すために、ファイルが存在することを確認するのも好きです。
ファイルパスが正しいことを再確認してください。キャッシュを外部アプリケーションから削除するように設定したい場合は、次のものを含める必要があります。 cache_purge スクリプトのどこかで機能し、必要に応じてそれを呼び出すだけです。その後は、単に関数を呼び出すだけです。
結論
この手法は、特にパフォーマンスを犠牲にすることなく動的コンテンツを表示したい場合に、あらゆるPHPアプリケーションに非常に役立ちます。 WordPressのインストールをスピードアップしたり、他のWebサイトやアプリケーションで(サイドバーのような)便利なビットを使用できるようにするためにそれを使用してください.
編集者注: この投稿はによって書かれています モンジュルドロン Hongkiat.comのために。 Monjurulは、NYCを拠点とするインターフェイスデザイナーであり、Web開発者であり、彼の人生の道を自由に歩んでいます。彼はDevGrow.comでブログを書いていて、そこで彼はWeb開発とデザインに関するヒントとリソースを共有しています.