Come usare JavaScript per rilevare la homepage

14 mar 2017, 12:34:35
Visualizzazioni: 19.8K
Voti: 4

Ho provato is_front_page() ma credo che sia il modo PHP per farlo. Forse non lo sto chiamando correttamente perché, naturalmente, non ottengo alcuna risposta. Forse mi mancano i modi dettagliati di accedere alle classi WordPress tramite JavaScript.

Quello che sto cercando di fare è semplice. Se mi trovo nella front page o homepage, aggiungere questa classe, se non lo sono aggiungere quest'altra classe. È molto semplice, solo che non funziona. Ho anche provato con uno pseudo tag span e ad aggiungere la classe a quello, ma non funziona.

4
Commenti

Hai provato a usare is_home invece - WordPress gestisce le pagine iniziali composte dagli ultimi post in modo diverso rispetto a una pagina statica. Inoltre, WordPress aggiunge già automaticamente delle classi per la pagina iniziale, quindi forse non hai bisogno di altre classi oltre a quelle?

physalis physalis
14 mar 2017 12:49:18

Beh, potrebbe funzionare, ma quello che penso di voler fare è accedere a una funzione PHP via jQuery, che è il principale conflitto (credo)

SunRhythms SunRhythms
14 mar 2017 12:59:04

Onestamente, non so cosa sia una "funzione PHP" in questo contesto, ma potresti usare la funzione has_class() di jQuery per individuare specificamente la pagina iniziale? Oppure, se vuoi eseguire uno script esclusivamente sulla pagina iniziale, potresti caricare lo script via PHP con la condizione is_home()/is_front_page().

physalis physalis
14 mar 2017 13:10:37

cfr. https://api.jquery.com/hasclass/

physalis physalis
14 mar 2017 13:17:48
Tutte le risposte alla domanda 3
0

Ho appena pubblicato una risposta a un'altra domanda su come farlo.

Nel tuo caso, assumendo che tu abbia usato body_class() nel tuo tema, la tua home page dovrebbe avere un tag <body> con la classe home.

Quindi nel tuo JavaScript, puoi fare:

if( $('body.home').length ){
  // Fai qualcosa
}
14 mar 2017 14:37:28
4

Utilizzando jQuery:

jQuery(document).ready(function($){
    if ( $('body').hasClass('home')) {
        $('.menu').addClass('absolute');
    } else {
        $('.menu').addClass('fixed');
    }
});
14 mar 2017 13:34:11
Commenti

Get by class name non è sempre supportato e non ho mai avuto fortuna con questo metodo.

SunRhythms SunRhythms
14 mar 2017 14:09:50

Controlla la risposta aggiornata che utilizza jQuery.

Dragos Micu Dragos Micu
14 mar 2017 14:22:26

Risposta interessante ma has class non è già di per sé una sorta di condizionale? È davvero necessario l'if? L'ho visto scritto anche senza, giusto per dire. Quando si scrive jQuery per WordPress bisogna modificare il formato. Ma grazie comunque. Mi indirizza verso una soluzione, proverò a scrivere qualcosa e spero funzioni. Comunque, tutto questo serve per inserirmi in un documento jQuery già funzionante e strutturato per un plugin, dove devo solo aggiungere una condizione minore perché la mia homepage ha un rotatore di sfondo a pagina intera e ho bisogno che l'header sia sopra in posizione assoluta. Succede solo nella pagina principale.

SunRhythms SunRhythms
14 mar 2017 14:44:55

@SunRhythms Come puoi vedere dalla documentazione, il metodo hasClass restituisce un Boolean, quindi usi l'istruzione IF per aggiungere una classe quando è True, ELSE una classe diversa quando è False.

https://api.jquery.com/hasclass/

Dragos Micu Dragos Micu
14 mar 2017 15:32:35
3

Puoi utilizzare la classe dell'ID della pagina. Se aggiungi la classe page-id nel tuo file JavaScript, potrebbe risolvere il tuo problema.

Descrizione immagine

14 mar 2017 12:49:24
Commenti

Sì, conosco la classe page. Dovrei usare un bool in modo che se page Id === home allora fare questo e quello? L'indirizzo CSS è molto lungo anche per l'area o il div che è solo l'headerwrapper

SunRhythms SunRhythms
14 mar 2017 12:54:46

Puoi usare qualcosa come

if( $('body.page-id-6').length ){ // Fai qualcosa }

ferdouswp ferdouswp
15 mar 2017 08:18:56

La risposta selezionata funziona... è praticamente la stessa cosa. grazie

SunRhythms SunRhythms
17 mar 2017 04:51:50