HeaderCode nur auf einzelnen Unterseiten
-
Moin Leute,
danke erstmal für den Versuch mein Problem zu klären 🙂
Ich muss in den Headerbereich der Webseite ein Code Schnipsel einfügen. Soweit so gut, übers Code „WPCode“ gelöst. Jedoch muss ich nun für ein Buchungstool unterschiedliche Schnipsel für die Unterseiten in den Header packen.
Stundenlange Youtube und Google Recherche haben mir leider nicht weitergeholfen, da ich dort nur die Lösungen über Theme Editor oder WPCode gefunden habe, dort sind es aber generelle Änderungen.Hoffe jemand hat da ne Lösung oder eine Idee für.
Danke schonmal.
Grüße
TimDie Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]
-
Hi Tim,
da Du Elementor nutzt, käme meines Erachtens das Plugin „Elementor Header & Footer Builder“ dafür in Frage (wäre meine erste Idee).
Viele Grüße,
RayDas ist ja etwas vage formuliert.
Welcher Code soll eingefügt werden?
Auf welchen Seiten soll er eingefügt werden?
(Bzw. auf welchen Seiten soll er nicht eingefügt werden?)Grundsätzlich kannst du die WordPress-Funktion
is_page()
in einem if-Statement nutzen, um eine bestimmte Funktion nur auszuführen, wenn es sich um eine der aufgeführten Webseiten handelt. Sinngemäß sowas wie …<?php /* Wenn die Seite mit der ID 42, dem Slug * about-me oder dem Titel Contact gezeigt * wird, führe eine Funktion im Header aus. */ if ( is_page( array( 42, 'about-me', 'Contact' ) ) ) { add_action( 'wp_head', 'my_header_comment' ); } function my_header_comment() { echo '<!-- Grüße aus dem WP Support-Forum -->'; }
Hey @pixolin,
für unseren neuen Shop müssen z.B. die Tageskarten Seite ein anderer Header Code haben als auf die Gruppenkarten Seite.
Also Code A auf https://adventure-world-oberhausen.de/adventure-day-tickets/
Code B auf https://adventure-world-oberhausen.de/angebot-fuer-grupppen/
Code C auf https://adventure-world-oberhausen.de/angebote-fuer-geburtstage/
und auf manche Seiten müsste Garnichts in den Header.Die If Lösung wäre ne möglich aber nicht die schlankeste denke dir mir oder? 😀
Danke schonmal für die schnelle Hilfe!Danke schon mal für die schnelle, unvollständige Antwort.
Die If Lösung wäre ne möglich aber nicht die schlankeste denke dir mir oder?
Was ist denn schlanker als „füge den Code nur ein, wenn du auf folgenden Seiten bist: …“? Und war das nicht genau das, was du umsetzen möchtest?
Drei Zeilen für ein if-Statement werden nicht die Performance deiner Website ruinieren.
Hey, ja habe es so versucht aber habe da anscheinend nen Denk Fehler drin, erstmal schonmal einen riesen Dank für deine Bemühungen.
Wenn ich den Code (als Bild eingefügt) eingebe, kommt der einfach als Header Text quasi.
Hier die Bilder
Wieso fügst du deinen Code als Bild ein? 😛
Damit ist dein Code nicht nur schlechter lesbar, sondern lässt sich auch nur durch Abtippen weiterverwenden. Bitte nutze demnächst den Block „Code“ und füge deinen Code direkt in die Antwort ein. Zum Teilen von großen Code-Blöcken ist pastebin.com eine gute Alternative.Außerdem können wir hier keine Grundlagen in PHP-Programmierung vermitteln. Es gibt auf Youtube eine ganze Reihe wirklich gut gemachter Tutorials, die dich schrittweise durch die Programmierung von PHP führen.
Trotzdem ganz kurz eine Erläuterung, was an deinem Code falsch ist und wie es besser gemacht werden sollte:
// Fehlerhafter Code! <?php if( true ) { <script src="example.js"></script>; }
ist ein Mischmasch aus PHP und einem HTML-Tag.
Du möchtest, dass die Zeile mit dem JavaScript ausgegeben wird. Dazu musst du die Zeile mit
echo
ausgeben. Also sowas wie …<?php if( true ) { echo '<script src="example.js"></script>'; }
Wobei sich dann die Frage stellt, wo das ausgegeben werden soll. Du möchtest den Code im Header ausgeben. Wenn du die Zeile
echo '<script src="example.js"></script>';
im Header ausführen möchtest, musst du einen Hook, eine von WordPress vordefinierte Schnittstelle verwenden. Der Hook zum Platzieren von Code im Header heißtwp_head
. Diesem Hook kannst du eine eigene Funktion zuweisen, sinngemäß sowas wie …<?php add_action( 'wp_head', 'my_javascript' ); function my_javascript() { echo '
<script src="example.js"></script>
'; }Mehrere if-Statements, die alle prüfen, ob eine bestimmte Seite abgerufen wird, lassen sich besser in einem switch-Statement unterbringen. Hier erst mal ein sehr einfaches Beispiel, wie so ein Statement funktioniert:
$i = 1; switch ($i) { case 0: echo "i ist gleich 0"; break; case 1: echo "i ist gleich 1"; break; case 2: echo "i ist gleich 2"; break; } // Ausgabe: i ist gleich 1
Auf dein Code-Beispiel angewendet …
function my_javascript() { /* wir gehen zuerst davon aus, dass * kein <script>-Tag ausgegeben wird. */ $script = ''; // Slug der Seite aus dem $post-Objekt global $post; $pagename = $post->post_name; // wenn der Slug übereinstimmt, <script>-Tag zuweisen switch( $pagename ) { case 'adventure_days_tickets': $script = '<script src="example_one.js"></script>'; break; case 'angebot-fuer-firmenevents': $script = '<script src="example_two.js"></script>'; break; case 'angebot-fuer-gruppen': case 'angebot-junggesellen': $script = '<script src="example_three.js"></script>'; break; // <script>-Tag (oder nichts) ausgeben. echo $script; }
(Achte darauf, dass ich in diesem Beispiel für die Seiten
angebot-fuer-gruppen
undangebot-junggesellen
das gleiche Skript aufrufe. Diecase
-Anweisungen stehen dann nur untereinander.)Zusammengefasst sieht der Code dann so aus:
<?php add_action( 'wp_head', 'my_javascript' ); function my_javascript() { $script = ''; global $post; $pagename = $post->post_name; switch( $pagename ) { case 'adventure_days_tickets': $script = '<script src="example_one.js"></script>'; break; case 'angebot-fuer-firmenevents': $script = '<script src="example_two.js"></script>'; break; case 'angebot-fuer-gruppen': case 'angebot-junggesellen': $script = '<script src="example_three.js"></script>'; break; echo $script; }
Rasch noch der Hinweis, dass das Einbinden von Inhalten Dritter datenschutzrechtlich geprüft werden muss. Vermutlich kannst du dich darauf beziehen, dass die Einbindung der Skript-Dateien „zur Wahrung berechtigter Interessen“ nach DSGVO Artikel 6 Abs. 1 lit. f erfolgt (weil die Webseiten sonst nicht funktionieren), musst dann aber in der Datenschutzerklärung darauf hinweisen. Am besten klärst du das noch mit einem Rechtsanwalt ab.
Guten Morgen pixolin,
nächstes mal achte ich drauf mit dem Code.
Echt ein riesen dank an dich!
Schönen Tag dir doch 🙂
- Das Thema „HeaderCode nur auf einzelnen Unterseiten“ ist für neue Antworten geschlossen.