wake-up-neo.com

Die Funktion is_page () funktioniert nicht

Ich versuche, diese benutzerdefinierten CSS und JS (geschrieben in einem benutzerdefinierten Plugin) nur zu einer bestimmten Seite hinzuzufügen.

das ist mein Code

<?php   

function randomAlphaNumeric($length) {
    $pool = array_merge(range(0,9), range('a', 'z'),range('A', 'Z'));
    $key='';
    for($i=0; $i < $length; $i++) {
        $key .= $pool[mt_Rand(0, count($pool) - 1)];
    }
    return $key;
}



add_action('init', 'register_script');
function register_script(){
    if(is_page('page_title')) {
        wp_register_script( 'custom_js', plugins_url('/js/custom-js.js', __FILE__).'?random='.randomAlphaNumeric(5), array('jquery'));
        wp_register_style( 'new_style', plugins_url('/css/new-style.css', __FILE__).'?random='.randomAlphaNumeric(5), false, 'all');
    }
}


// use the registered jquery and style above
add_action('wp_enqueue_scripts', 'enqueue_style');
function enqueue_style(){
    if(is_page('page_title')) {
        wp_enqueue_script('custom_js');
        wp_enqueue_style( 'new_style' );
    } 
}

aber is_page() scheint überhaupt nicht zu funktionieren. Ich habe versucht, es mit ID und SCHNECKE , aber kein Erfolg

UPDATE Bedingung zum Überprüfen des Seitentitels ersetzt, funktioniert immer noch nicht

add_action('init', 'register_script');
function register_script(){
    global $post;
    if($post->post_title == 'page_title') {
        wp_register_script( 'custom_js', plugins_url('/js/custom-js.js', __FILE__).'?random='.randomAlphaNumeric(5), array('jquery'));
        wp_register_style( 'new_style', plugins_url('/css/new-style.css', __FILE__).'?random='.randomAlphaNumeric(5), false, 'all');
    }
}


// use the registered jquery and style above
add_action('wp_enqueue_scripts', 'enqueue_style');
function enqueue_style(){
    global $post;
    if($post->post_title == 'page_title') {
        wp_enqueue_script('custom_js');
        wp_enqueue_style( 'new_style' );
    } 
}
1
iKamy

Der init -Hook ist zu früh - WordPress hat das abgefragte Objekt (Beitrag, Kategorie usw.) noch nicht identifiziert; daher funktioniert die is_page() nicht. t dort arbeiten:

add_action('init', 'register_script');

Damit bedingte Tags/Funktionen wie is_page(), is_single() usw. funktionieren (d. H. Das richtige Ergebnis zurückgeben), sollten Sie wp oder einen späteren Hook verwenden:

add_action('wp', 'whatever_function');

Zum Registrieren/Einreihen von Skripten und Stilen sollten Sie jedoch immer den Hook wp_enqueue_scripts Verwenden. Sie würden dies also verwenden (und nicht die oben genannten):

add_action('wp_enqueue_scripts', 'register_script');

PS: Dank an @ huraji für seinen hilfreichen Kommentar.

4
Sally CJ
  1. Versuchen Sie, den Parameter von page_title In page-slug Oder id zu ändern. https://developer.wordpress.org/reference/functions/is_page/#parameters
  2. Versuchen wir, Skripte in derselben enqueue_style() - Funktion zu registrieren, bevor Sie sie in die Warteschlange stellen.

Update : Mein Ziel hier war es, Versuche zu versuchen, verschiedene Parameter für is_page() zu versuchen UND dieselbe Funktion enqueue_style() zu verwenden in wp_enqueue_scripts ist dies die EINZIGE empfohlene Methode zum Registrieren/Einreihen von Skripten.

1
huraji