Cum detectezi pagina principală folosind JavaScript

14 mar. 2017, 12:34:35
Vizualizări: 19.8K
Voturi: 4

Am încercat is_front_page() dar cred că aceasta este metoda PHP de a face acest lucru. Probabil nu o apelez corect pentru că, bineînțeles, nu primesc niciun răspuns. Poate îmi lipsesc detaliile despre modalitățile JavaScript de a accesa clasele WordPress.

Ceea ce încerc să fac este simplu. Dacă sunt pe pagina principală sau homepage vreau să adaug această clasă, iar dacă nu sunt, să adaug cealaltă clasă. Este foarte simplu dar nu funcționează. Am încercat chiar și un tag span pseudo și să adaug clasa la acesta dar nu funcționează.

4
Comentarii

Ai încercat is_home în schimb - WordPress gestionează paginile de start compuse din postări recente diferit față de pagini statice. De asemenea, există deja clase adăugate automat pentru pagina de start prin WordPress, așa că poate nu ai nevoie de mai multe clase decât cele existente?

physalis physalis
14 mar. 2017 12:49:18

Păi asta ar putea funcționa, dar cred că încerc să accesez o funcție PHP prin jQuery, care este conflictu major (cred eu)

SunRhythms SunRhythms
14 mar. 2017 12:59:04

Sincer, nu știu ce este o "funcție PHP" (am tradus "fiction" ca "funcție" din context), dar ai putea folosi funcția has_class() din jQuery pentru a ținti specific pagina de start? Sau, dacă vrei să rulezi un script exclusiv pe pagina de start, ai putea încărca scriptul prin PHP cu condiția is_home()/is_front_page().

physalis physalis
14 mar. 2017 13:10:37

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

physalis physalis
14 mar. 2017 13:17:48
Toate răspunsurile la întrebare 3
0

Tocmai am postat un răspuns la o altă întrebare despre cum să faci asta.

În cazul tău, presupunând că ai folosit body_class() în tema ta, pagina ta principală ar trebui să aibă clasa home pe elementul <body>.

Deci în JavaScript, poți face:

if( $('body.home').length ){
  // Execută acțiuni
}
14 mar. 2017 14:37:28
4

Folosind jQuery:

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

Obținerea după numele clasei nu este întotdeauna suportată și nu am avut noroc cu aceasta niciodată.

SunRhythms SunRhythms
14 mar. 2017 14:09:50

Verifică răspunsul actualizat folosind jQuery.

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

Răspuns interesant, dar funcția hasClass nu este deja un fel de condițional în sine? Ai nevoie de if? Am văzut scris fără, doar zic. Când scrii jQuery pentru WordPress trebuie să modifici formatul. Dar mersi. Mă îndreaptă undeva, voi încerca să scriu ceva și sper să funcționeze. Apropo, toate astea sunt pentru a se potrivi într-un document jQuery deja funcțional și structurat pentru un plugin pe care îl folosesc doar cu o condiție minoră, deoarece pagina mea principală are un rotitor de fundal pe întreaga pagină și trebuie ca antetul meu să fie deasupra în poziție absolută. Se întâmplă doar pe pagina principală.

SunRhythms SunRhythms
14 mar. 2017 14:44:55

@SunRhythms După cum poți vedea din documentație, metoda hasClass returnează o valoare Boolean, așa că folosești instrucțiunea IF pentru a adăuga o clasă în caz de True, ELSE o clasă diferită în caz de False.

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

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

Puteți utiliza clasa page-id. Dacă adăugați clasa page-id în fișierul dvs. JavaScript, poate rezolva problema dumneavoastră.

Introduceți descrierea imaginii aici

14 mar. 2017 12:49:24
Comentarii

Da, știu despre clasa page. Ar trebui să folosesc un bool, de exemplu dacă page Id === home atunci cutare și cutare? Adresa CSS este foarte lungă chiar și pentru zona sau div-ul care este doar headerwrapper

SunRhythms SunRhythms
14 mar. 2017 12:54:46

Poți folosi ceva de genul

if( $('body.page-id-6').length ){ // Fă ceva }

ferdouswp ferdouswp
15 mar. 2017 08:18:56

Răspunsul bifat funcționează... este practic același lucru. mulțumesc

SunRhythms SunRhythms
17 mar. 2017 04:51:50