Domanda

Voglio che il mio plugin registrasse uno script solo in una determinata pagina.

Ad esempio, all'interno del mio file plugin Voglio scrivere qualcosa del genere:

if (is_page()) {
    $pageid_current = get_the_ID();
    $page_slug = get_post($pageid_current)->post_name;

    if ($page_slug == 'articles'){
        wp_register_script('myscript', '/someurl/main.js');
    }
}
.

Ma ottengo l'errore:

.

IS_PAGE è stato chiamato in modo errato.I tag della query condizionali non funzionano prima che la query sia eseguita.Prima di allora, restituiscono sempre falsi.Per favore Vedere Debug in WordPress per ulteriori informazioni.(Questo messaggio era aggiunto nella versione 3.1.)

Come posso, all'interno di un plugin, registrare uno script in una determinata pagina?

È stato utile?

Soluzione

is_page() funziona solo all'interno dei file del modello.

E per usarlo all'interno dei file del plugin, è necessario usarlo con la combinazione di template_redirect Gancio d'azione.

.

Questo gancio d'azione esegue appena prima che Wordpress determina quale pagina modello da caricare.

Quindi il seguente snippet funzionerebbe:

add_action( 'template_redirect', 'plugin_is_page' );

function plugin_is_page() {
    if ( is_page( 'articles' ) ) {
        wp_register_script( 'my-js-handler', '/someurl/main.js', [], '1.0.0', true );
    }
}
.

Altri suggerimenti

È possibile utilizzare is_page() dopo il reindirizzamento del modello, quindi è necessario aggiungere il gancio come questo:

add_action('template_redirect','your_function');
function your_function(){
 if ( is_page('test') ) {
  // do you thing.
 }
}
.

È necessario Registrati La tua scrittura come se vuoi che funzioni ovunque. È possibile registrarlo dopo che il lavoro è terminato, come questo:

function deregister_my_script() {
    if (!is_page('page-d-exemple') ) {
        wp_deregister_script( 'custom-script-1' );
    }
}
add_action('wp_print_scripts', 'deregister_my_script', 100 );
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top