web-dev-qa-db-ja.com

ページテンプレートの上のフィルタに小さいphp条件を有効にする

特定のページで正しくアクティブ化されている場合は、フッターに基本的なphp条件を適用したいと思いました。

コードは:

if ( $photoSwipe == 1 ) {
  get_template_part( _ps );
}

それで、もし私がこのプラグインをアクティブにするつもりなら、私は私のフッター領域にget_template_part(_ps)を有効にする私の特定のページに$photoSwipe = 1を引き起こすことができます。

2
iMarkDesigns

これはプラグインから実行するための実行可能な方法ですが、テンプレートファイルではもっと意味があるようです。

それが普遍的なオプションであるなら、あなたはカスタム設定ページを通して、または単に活性化フックでプラグイン活性化で初期化することによってオプションを作成するでしょう(それが静的な値であるなら):

function wpse_photoswipe_activate_plugin() {
    $page_id = 123; // This could be an ID, or if you wanted, a template name
    add_option( 'wpse_activate_photoswipe', $page_id );
}
register_activation_hook( __FILE__, 'wpse_photoswipe_activate_plugin' );

function wpse_photoswipe_deactivate_plugin() {
    delete_option( 'wpse_activate_photoswipe' );
}
register_deactivation_hook( __FILE__, 'wpse_photoswipe_deactivate_plugin' );

次に、フッターテンプレートでは、次のようにします。

global $post;
if ( get_option( 'wpse_activate_photoswipe' ) === $post->ID ) {
    get_template_part( _ps );
}

しかし、これを行う最も簡単な方法についての私の意見が欲しいのなら、すでにテンプレートファイルを編集しているように思えるので、既存のコードを以下のように更新するだけです。

if ( is_page( $page_id ) ) {
    get_template_part( _ps );
}

あなたが提案していることをするもっと多くの方法がありますがあなたが提供した情報(例えば、既存のテーマフックやwp_footer)を考えれば、これは正しい方向へあなたを導きます。

2
brianjohnhanna