ワードプレスのテーマをアクティブにすると、変更するファイルを見つけるのが常に面倒です。物事を単純化する方法はありますか?
しかし一方で、get_template_part機能を考慮すると、これは不可能かもしれません。あなたは何を言っていますか?
ワードプレスのテーマをアクティブにすると、変更するファイルを見つけるのが常に面倒です。物事を単純化する方法はありますか?
しかし一方で、get_template_part機能を考慮すると、これは不可能かもしれません。あなたは何を言っていますか?
回答:
にフックしtemplate_include
、グローバルを設定してテーマで設定されたテンプレートをメモし、その値をフッターまたはヘッダーに読み込んで、特定のビューでどのテンプレートが呼び出されているかを確認します。
で前に私は、このフィルターフックについて話した現在のテンプレートファイルの名前を取得しますが、つかむ行くそのコードのコピーをし、それをあなたのテーマのplonk functions.php
ファイルを。
次に開くテーマのheader.php
かfooter.php
(あるいはあなたが好きな場所)と現在のテンプレートをプリントアウトするには、以下のようなものを使用。
<div><strong>Current template:</strong> <?php get_current_template( true ); ?></div>
これを実稼働サイトで使用し、その情報を非管理者ユーザーから遠ざけたい場合は、少し条件付きロジックを追加します。
<?php
// If the current user can manage options(ie. an admin)
if( current_user_can( 'manage_options' ) )
// Print the saved global
printf( '<div><strong>Current template:</strong> %s</div>', get_current_template() );
?>
これで、どのビューがどのテンプレートを使用しているかを追跡し、その情報を訪問者から遠ざけることができます。
必要なのは、現在のページを生成するためにどのテンプレートファイルが使用されているかを確認することだけであれば、コードで手を汚す必要はありません;)
Debug Barと呼ばれるこの便利なプラグインがあります。 それはあなたを含む多くの状況で素晴らしいヘルパーです。あなたは間違いなくそれをチェックアウトする必要があります-私と他の多くの人にとって、それはどんなWP開発にとっても必携の仲間です。
私はあなたが恋に落ちることができるスクリーンショットを添付しました...
デバッグバーを機能させるにはwp_debug
、wp_savequeries
オプションとオプションを有効にする必要があります。これらのオプションはデフォルトで無効状態になっています。
ただし、変更を行う前に、留意すべき点がいくつかあります。
変更するには:
wp_config.php
FTPクライアントを介してファイルを開きます。wp_debug
オプションを検索します。に編集しdefine( 'WP_DEBUG', true );
ます。行が存在しない場合は、ファイルに追加します。define( 'SAVEQUERIES', true );
に、ファイルの行を編集または追加します。詳細:コーデックス
WP_DEBUG
とSAVEQUERIES
それがされているが、強化され、それらによって。
スーパー管理者のみに現在のテンプレートを表示するこの便利な機能を使用します。
function show_template() {
if( is_super_admin() ){
global $template;
print_r($template);
}
}
add_action('wp_footer', 'show_template');
お役に立てば幸いです。:)
私が見つけた最も簡単な方法は、bodyPressにWordPress機能を含めることです。表示しているページに応じて、いくつかのクラスを追加します(フロントのホーム、ページのページなど)。
ここでチェックしてください:http : //codex.wordpress.org/Function_Reference/body_class
さらに、これらのページでCSSを使用して要素をターゲティングするのに役立ちます。
David Rが言及したように、テンプレート階層(http://codex.wordpress.org/Template_Hierarchy)を知ることも良い考えです。
この目的に特化したもう1つの最低限のプラグインがあります。これらの他の機能は便利に見えるので、デバッグバーのインストールに傾いていますが、これはより基本的で、特にこの目的のためです:http : //wordpress.org/extend/plugins/what-the-file/
私が行う非常に簡単なことの1つは、テーマの関連する各ファイルにテンプレートファイルを識別するHTMLコメントを挿入することです。たとえば、index.phpの先頭に
<!-- index -->
そして、front-page.phpの上部
<!-- front -->
しかし明らかにテーマを変更する必要があります。footer.phpファイルまたはheader.phpにカスタム関数を追加すると、どのファイルが使用されているかがわかります。上記の方法と参照チャートhttp://codex.wordpress.org/Template_Hierarchyは、私が使用する傾向があるものです。
まさにこれを行うTheme Checkという名前のプラグインがあります。使用中の現在のテンプレートファイルの名前をHTMLコメントとして表示します。
どうぞ:
プラグイン、子テーマ、および/または親テーマの組み合わせからのすべてのテンプレート部分を含む、現在のランディングページで使用中のすべてのテンプレートファイルを含む HTMLリストは、すべて1行のコードで:
echo '<ul><li>'.implode('</li><li>', str_replace(str_replace('\\', '/', ABSPATH).'wp-content/', '', array_slice(str_replace('\\', '/', get_included_files()), (array_search(str_replace('\\', '/', ABSPATH).'wp-includes/template-loader.php', str_replace('\\', '/', get_included_files())) + 1)))).'</li></ul>';
サーバーがどのパスでもダブルスラッシュを返さないことを確認する必要があります。footer.phpのように、すべてのテンプレートファイルが実際に使用された後、管理バーがレンダリングされる前にこれを配置することを忘れないでください。
admin-bar stuff
パスが上部または他のファイルに表示されている場合template-loader.php
、このコード行のファイル名を次のように変更します。しばしば:class-wp-admin-bar.php
管理バーでこれが必要な場合は、正しい優先順位(最も早い)を使用して、このリストの最後にファイルが入力されないようにします。例えば:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
優先順位は-5
、shureを最初にロードします。重要なのはget_included_files()
、適切なタイミングで呼び出すことです。それ以外の場合は、配列ポップが必要です。
これを分割するには:
PHPバックトレースなしで、含まれているすべてのテンプレートファイルを収集することはできません。内部のスーパーグローバルはtemplate_include
それらをすべて収集しません。もう1つの方法は、各テンプレートファイルに「マーカーを配置する」ことですが、最初にファイルとやり取りする必要がある場合は、時間とアイデア全体に夢中になります。
1)現在のWordpressリクエストで使用されたすべてのファイルの内部を確認する必要があります。そして、彼らはたくさんです!functions.phpが登録される前に300ファイルを使用している場合でも驚かないでください。
$included_files = str_replace('\\', '/', get_included_files());
PHPネイティブのget_included_files()を使用して、バックスラッシュをスラッシュに変換し、Wordpressのほとんどの戻りパスに一致させます。
2) template-loader.phpが登録されている場所からその配列を切り取っています。その後、読み込まれたget_included_files()にはテンプレートファイルのみが読み込まれます。
/* The magic point, we need to find its position in the array */
$path = str_replace('\\', '/', ABSPATH);
$key = $path.'wp-includes/template-loader.php';
$offset = array_search($key, $included_files);
/* Get rid of the magic point itself in the new created array */
$offset = ($offset + 1);
$output = array_slice($included_files, $offset);
3)結果を短くします。使用中のテンプレートとして、テーマフォルダーまたはプラグインフォルダーをプラグイン、テーマ、または子テーマフォルダーから混合できるようになるまで、パスは必要ありません。
$replacement = $path.'wp-content/';
$output = str_replace($replacement, '', $output);
4)最後に、配列から素敵なHTMLリストに変換します
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
最後の変更が必要になる可能性があるその3で) -replacement、あなたがあればいけないしたい必要が含まれるプラグインによって。彼らはclass-files
遅れて呼び出し、テンプレート出力処理中に「インターセプト」するかもしれません。
ただし、この段階で出力をレンダリングする「テンプレート」でなくても、ロードされたものを追跡するという考え方なので、それらを表示したままにしておくのが妥当であることがわかりました。