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;
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
}
}
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 ...
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
}
}
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:
/** * Name der Vorlage: Startseite */
Settings > Reading > A static page > Front page: Home
)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.