it-swarm.com.de

Aktions-Hook bedingt hinzufügen - nur wenn home.php verwendet wird

Ich versuche, einen Aktions-Hook in die functions.php einzufügen, nur wenn die Seite home.php ist, aber das Folgende funktioniert nicht

if ( is_page_template("home.php") ) {

// do stuff

}

Um sicherzustellen, dass die verwendete Datei home.php ist, mache ich das

global $template; echo $template; 
2
Iladarsda

Verwenden Sie stattdessen is_home, da is_page_template für home.php nicht funktioniert, da es sich technisch gesehen nicht um eine Seitenvorlage im herkömmlichen Sinne handelt.

add_action('template_redirect', 'are_we_home_yet', 10);
function are_we_home_yet(){
        if ( is_home() ) {
        //your logic here
    }
}

Überarbeitet:

add_action('template_redirect', 'are_we_home_yet', 10);
function are_we_home_yet(){
        global $template;
        $template_file = basename((__FILE__).$template);
        if ( is_home() && $template_file = 'home.php' ) {
        //do your logic here
    }
}

Die überarbeitete Antwort ist genau das, was Sie wirklich brauchen. Sie prüft, ob Sie sich auf der Homepage befinden, ob die Vorlagendatei enthalten ist und ob es sich bei dieser Datei tatsächlich um Ihre home.php -Datei handelt. Wenn ja, können Sie loslegen über deine Logik ...

7
userabuser

Die gesuchte Funktion ist is_front_page()

add_action('template_redirect', 'work_only_on_front_page', 10);
   function work_only_on_front_page(){
    if ( is_front_page() ) {
    // Your code
   }
}
0
Alon Katziri

Ich habe dieses Problem gehabt. Ich wollte Jssor Slider-Skripte nur beim Laden der Homepage einbinden. Ich habe auch ein home.php benutzt und das so gelöst:

  1. Benenne meine home.php Datei in etwas anderes um, wie home_mysite.php Setzen eines Namens für diese Seitenvorlage in der Kopfzeile des obersten Kommentars der Datei, wie:
/** 
 * Name der Vorlage: Startseite 
 */
  1. Dann habe ich eine neue leere Seiteneinstellung Home als Seitenvorlage erstellt.
  2. Konfiguriertes Wordpress, um meine brandneue Seite als Startseite anzuzeigen (Settings > Reading > A static page > Front page: Home)
  3. Schließlich fand ich heraus, dass es notwendig ist, den bedingten Code in meine Funktion zu integrieren, damit is_page('home') funktioniert. ( 'home' ist meine leere neue Homepage slug ). Das heißt, als ich versuchte, die Aktion bedingt hinzuzufügen, konnte ich nicht überprüfen, ob meine Homepage geladen wurde. is_page('home') gab immer false zurück. Es hat funktioniert, als ich die Logik geändert habe, um die Aktion immer hinzuzufügen, aber die Skripte unter bestimmten Bedingungen in die Warteschlange zu stellen.

Der Code, der auf functions.php ausgearbeitet hat:

function mysite_jssor() {
    //conditionally enqueue the script 
    if ( is_page('home') ) {
        wp_enqueue_script( 'jssor', get_stylesheet_directory_uri() . '/js/jssor.js', array( 'jquery' ), false, false );
    }
}
//always adds the action
add_action( 'wp_enqueue_scripts', 'mysite_jssor' );

Auf diese Weise werden meine Jssor-Skripte nur beim Aufrufen der Homepage geladen, nicht beim Aufrufen anderer Seiten oder Beiträge.

0
yuric