TransWikia.com

if (is_page(**PAGE ID**)) not working

WordPress Development Asked on August 20, 2020

I’m following this tutorial on adding Google Content Experiments code to header.php.

I added the following code to header.php:

<?php if (is_page('346') ):?>
    <!-- Google Analytics Content Experiment code -->
        ...
    <!-- End of Google Analytics Content Experiment code -->
<?php endif; ?>

This didn’t produce the content experiment code on the front end. I tried:

<?php if (is_page(346) ):?>
    <!-- Google Analytics Content Experiment code -->
        ...
    <!-- End of Google Analytics Content Experiment code -->
<?php endif; ?>

This didn’t work either.

Can you see why this code is not working? Thanks.

8 Answers

you can use this for

<?php 
global $post;

if( $post->ID == 346) { ?>

      <!-- do your stuff here -->

<?php } ?>

you can use this anywhere either in header or anywhere else.

Correct answer by Waqas Shakeel on August 20, 2020

For single posts use

if ( is_single( '1346' ) )

For single pages use

if ( is_page( '1346' ) )

Where '1346' is your post or page ID.

is_page will NOT work with single posts and is_single will not work with single pages.

Answered by Dev on August 20, 2020

function test_run(){

   if (is_page( 'Page Title' ) ): //you can use is_page(int post id/slug/title)
      # Do your stuff
   endif;

}

add_action('parse_query', 'test_run');

completing @Lucas Bustamante 's answer

Answered by RAJ NARWADE on August 20, 2020

First you have to know the difference between a page and post. Once you have done that then you can choose whether to use is_page or is_single.

If you are dealing with WordPress pages, then write in this way below. Note, this example is using array just in case if you want to implement it in many pages:

<?php if (is_page( array( 1, 529, 'or post title'  ) ) ) : ?>
    <!-- Do nothing -->
<?php else : ?>
    <!-- Insert your code here -->
<?php endif; ?>

But if you need it to take effect also on your posts, then add this lines too:

<?php if (is_single( array( 1, 529, 'or post title'  ) ) ) : ?>
    <!-- Do nothing -->
<?php else : ?>
    <!-- Insert your code here -->
<?php endif; ?>

Answered by Arsie Organo Jr on August 20, 2020

Hooks such as init will not work at all.

You have to hook at least on parse_query.

Everything bellow will work:

is_page(198); # ID (int)
is_page('198'); # ID (string)
is_page('Some Title'); # Title, case-sensitive
is_page('some-title'); # Slug

But it must be hooked at least in parse_query or any other hook after it. You can see WordPress hook order here: https://codex.wordpress.org/Plugin_API/Action_Reference

Answered by Lucas Bustamante on August 20, 2020

try to use is_single($post)

in your case is_single(346) or is_single('346') both should work

more here

Answered by Huseyn on August 20, 2020

Please try to remove '' (single quotes) from ID number & it will work:

is_page(34)

Answered by Md. Jahidul Islam on August 20, 2020

A simpler solution will be to pass the title or the slug as argument in is_page(). You won't have issues if you duplicate that page on another server.

<?php
if (is_page( 'Page Title' ) ):
  # Do your stuff
endif;
?>

Answered by RRikesh on August 20, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP