it-swarm.com.de

Wie lade ich JS und CSS nur auf bestimmten Seiten mit is_page ()?

Ich erstelle mein erstes WP Plugin. Es sollte einige JS- und CSS-Dateien nur auf bestimmten Seiten laden, die über ein Formular ausgewählt wurden, das im Admin-Bereich des Plugins verfügbar ist. Sobald der Seitentitel im Formular ausgewählt wurde, wird er in der DB-Tabelle wp_options gespeichert. Anschließend werden die Daten in einer Variablen mit dem Namen $ page_selected zurückgezogen. Um JS- und CSS-Dateien nur auf den in form ausgewählten Seiten zu laden, wollte ich die Funktion is_page () verwenden und die Variable $ page_selected als Parameter übergeben.

 function my_custom_tooltip() {
    if (  is_page($page_selected) ) {
        wp_enqueue_style( 'custom_tooltip_frontend_css', plugins_url('custom-image-tooltip/custom-image-tooltip.css') );
        wp_enqueue_script( 'custom_tooltip_frontend_js', plugins_url('custom-image-tooltip/custom-image-tooltip.js'), array('jquery'), '', true );
    }
} add_action('wp_enqueue_scripts', 'my_custom_tooltip');

Leider funktioniert diese bedingte Anweisung in meinem Fall nicht richtig. Gibt es eine Möglichkeit, dasselbe Ergebnis zu erzielen, indem die vom Benutzer im Formular ausgewählte Seite mit der aktuell angezeigten Seite abgeglichen wird?

6
RaymondMik

Wenn $page_selected eine Zeichenfolge mit dem Seitentitel zurückgibt, sollte dies problemlos funktionieren. Ich habe es getestet und is_page() akzeptiert den Seitentitel, die Seiten-ID und den Slug.

Wenn Sie auf Probleme stoßen, ist es besser, die Seiten-ID in der Datenbank zu speichern und mit is_page() zu verwenden.

Weitere Informationen zu den möglichen Argumenten, die an diese bedingte Anweisung übergeben werden können, finden Sie unter https://codex.wordpress.org/Function_Reference/is_page .

4
Puneet Sahalot

Ich nehme einige hübsche Änderungen vor und hoffe, dass diese Ihnen gut helfen. Versuchen Sie den folgenden Code:

function my_custom_tooltip() {
  wp_enqueue_style( 'custom_tooltip_frontend_css', plugins_url('custom-image-tooltip/custom-image-tooltip.css') );
  wp_enqueue_script( 'custom_tooltip_frontend_js', plugins_url('custom-image-tooltip/custom-image-tooltip.js'), array('jquery'), '', true );
} 

if(is_page($page_selected)){
    add_action('wp_enqueue_scripts', 'my_custom_tooltip');
}

Stellen Sie hier sicher, $page_selected.

HINWEIS: Sie sollten immerIhre Skripte in die Datei functions.php eines Themas einreihen - keine Vorlagendatei. Vorlagendateien sind einfach nicht der richtige Ort 99,9% der Zeit.

Sie können is_page() in mehrfacher Form verwenden, wie zum Beispiel:

// When any single Page is being displayed.
is_page();

// When Page 42 (ID) is being displayed.
is_page( 42 );

// When the Page with a post_title of "Contact" is being displayed.
is_page( 'Contact' );

// When the Page with a post_name (slug) of "about-me" is being displayed.
is_page( 'about-me' );

// Returns true when the Pages displayed is either post ID 42, or post_name "about-me", or post_title "Contact".  
is_page( array( 42, 'about-me', 'Contact' ) );

Hinweis: Die Array-Fähigkeit wurde in Version 2.5 hinzugefügt.

Wenn Sie diesen Code in einer Vorlagendatei ausführen, funktioniert er einwandfrei. Befindet sich dieser Code jedoch in functions.php oder in einer Plugin-Datei, wird dieser Fehler in debug.log ausgelöst:

PHP-Hinweis: is_page hieß falsch . Bedingte Abfragetags funktionieren nicht, bevor die Abfrage ausgeführt wird. Vorher geben sie immer false zurück.

In diesem Fall können Sie den template_redirect Aktions-Hook verwenden, wie in hier erläutert.

0
Lucas Miranda

Ungetestet ... aber so etwas sollte funktionieren, um den Namen (d. H. Slug) der aktuell angezeigten Seite zu erhalten:

function my_custom_tooltip() {
    global $post;
    if ( is_object( $post ) && $post->post_type=='page' ) {
        if ( $post->post_name == $page_selected ) {
            wp_enqueue_style( 'custom_tooltip_frontend_css', plugins_url('custom-image-tooltip/custom-image-tooltip.css') );
            wp_enqueue_script( 'custom_tooltip_frontend_js', plugins_url('custom-image-tooltip/custom-image-tooltip.js'), array('jquery'), '', true );
        }
    }
}

Der Vergleich mit $page_selected setzt natürlich voraus, dass er auch im "Slug" -Format vorliegt ... oder wenn Sie mit dem Seitentitel vergleichen, können Sie $post->post_title anstelle von $post->post_name verwenden.

Beachten Sie, dass dies ein Beispiel ist, in dem die Verwendung von Klassen PHP hilfreich ist, um die Verwendung einer globalen Variablen ($page_selected) in dieser Funktion zu vermeiden ...

0
C C