私はフォローしています このチュートリアル Google Content Experimentsコードをheader.php
に追加することについて。
以下のコードをheader.php
に追加しました。
<?php if (is_page('346') ):?>
<!-- Google Analytics Content Experiment code -->
...
<!-- End of Google Analytics Content Experiment code -->
<?php endif; ?>
これはフロントエンドでコンテンツ実験コードを生成しませんでした。私は試した:
<?php if (is_page(346) ):?>
<!-- Google Analytics Content Experiment code -->
...
<!-- End of Google Analytics Content Experiment code -->
<?php endif; ?>
これもうまくいきませんでした。
このコードが機能していない理由がわかりますか。ありがとう。
あなたはこれを使用することができます
global $post;
<?php if( $post->ID == 346) { ?>
<!-- do your stuff here -->
<?php } ?>
あなたはこれをヘッダのどこか他の場所で使うことができます。
もっと簡単な解決策は、 is_page()
の引数としてtitle
またはslug
を渡すことです。そのページを別のサーバーに複製しても問題ありません。
<?php
if (is_page( 'Page Title' ) ):
# Do your stuff
endif;
?>
init
のようなフックは、 ではまったく動作しません。parse_query
をフックする必要があります。これはWordPressコアのis_page
関数のコードの一部です。
* @param int|string|array $page Optional. Page ID, title, slug, path, or array of such. Default empty.
* @return bool Whether the query is for an existing single page.
*/
public function is_page( $page = '' ) {
if ( !$this->is_page )
return false;
if ( empty( $page ) )
return true;
$page_obj = $this->get_queried_object();
$page = array_map( 'strval', (array) $page );
if ( in_array( (string) $page_obj->ID, $page ) ) {
return true;
} elseif ( in_array( $page_obj->post_title, $page ) ) {
return true;
} elseif ( in_array( $page_obj->post_name, $page ) ) {
return true;
}
ご覧のとおり、以下のすべてが機能します。
is_page(198); # (int) ID
is_page('198'); # (string) ID
is_page('Some Title'); (string) Title, case-sensitive
is_page('some-title'); (string) Slug
しかし、少なくともparse_query
またはそれ以降のフックにフックする必要があります。あなたはここでWordPressフックオーダーを見ることができます: https://codex.wordpress.org/Plugin_API/Action_Reference
ID番号から''
(単一引用符)を削除してみてください。動作します:
is_page(34)