Ondersteuning » Code oplossingen gezocht » Page ID ophalen in functions.php van child theme

  • Opgelost SEOguruNL

    (@seogurunl)


    Via een action hook heb ik het voor elkaar gekregen om javascript-code in de head sectie van de pagina’s te krijgen. Dit heb ik gedaan door in mijn childtheme een functions.php te plaatsen en daar de volgende regel toe te voegen:
    add_action('wp_head', 'form_ajax_js_code');

    de form_ajax_js_code is een functie in dezelfe functions.php.

    Nu wil ik de add_action alleen uitgevoerd zien bij bepaalde pagina’sm dus bepaalde Page/Post ID’s.

    Toen heb ik er deze code van gemaakt:

    if ($wp_query->post->ID == 687 ){
    	add_action('wp_head', 'form_ajax_js_code');
    }

    Probleem is dat $wp_query->post->ID een lege waarde teruggeeft. Ook $post->ID werkt niet. Heeft iemand een idee? Dank!

10 reacties aan het bekijken - 1 tot 10 (van in totaal 10)
  • Heb je wel de $post geglobalt d.m.v.
    global $post; in je function?

    Thread starter SEOguruNL

    (@seogurunl)

    Dank Danny!

    Die globale variabele had ik inderdaad niet gedefinieerd, maar helaas blijkt dat niet de oplossing. De waarde van $post->ID is nog steeds leeg.

    Ik heb nu de volgende code:

    global $post;
    echo "PostID: $post->ID";
    if ($post->ID == 687 ){
    	add_action('wp_head', 'form_ajax_js_code');
    }

    Het resultaat van de echo is “PostID: “, dus zonder waarde. De functie add_action werkt wel prima. Nog meer suggesties? Dank!

    Misschien zit ik mis, maar is het niet:

    echo "PostID: " . $post->ID;

    wat geeft een <?php var_dump( $post ); ?>

    Thread starter SEOguruNL

    (@seogurunl)

    NULL

    Kan je eens je gehele code hier plaatsen?

    Thread starter SEOguruNL

    (@seogurunl)

    <?php
    
    global $post;
    echo "PostID: $post->ID";
    if ($post->ID == 687 ){
    	add_action('wp_head', 'form_ajax_js_code');
    }
    
    function form_ajax_js_code () {
    
        $var = "Mijn javascriptcode\n";
        echo $var;
    }
    ?>

    Dit zou m moeten zijn.

    <?php add_action( 'after_setup_theme', 'setup_theme' );
    
    	function setup_theme() {
    		add_action( 'wp_head', 'form_ajax_js_code' );
    	}
    
    	function form_ajax_js_code () {
    		global $post;
    
    		if( $post->ID == 687 ) {
    			$var = "Mijn javascriptcode\n";
    			echo $var;
    		}
    	}
    ?>
    Thread starter SEOguruNL

    (@seogurunl)

    Die doet het inderdaad, dank je wel!

    Wat ik echter niet goed begrijp is waarom hij gekoppeld moet worden aan de after_setup_theme hook. Uit de action reference begrijp ik dat die alleen wordt gebruikt bij activering van de theme. En daar is nu toch geen sprake van?

    Ahh shit, ik had die snippet nog open staan haha. Een nog mooiere oplossing is de volgende:

    <?php
    	class Mijn_Thema {
    
    		//PHP Constructor
    		function __construct() {
    			add_action( 'wp_head', array( &$this, 'form_ajax_js_code' ) );
    		}
    
    		function form_ajax_js_code () {
    			global $post;
    
    			if( $post->ID == 687 ) {
    				$var = "Mijn javascriptcode\n";
    				echo $var;
    			}
    		}
    	}
    
    	$mijn_thema = new Mijn_Thema();
    ?>
10 reacties aan het bekijken - 1 tot 10 (van in totaal 10)
  • Het onderwerp ‘Page ID ophalen in functions.php van child theme’ is gesloten voor nieuwe reacties.