Support » Allgemeine Fragen » php echo „“ posts css text

  • Gelöst mjuenger

    (@mjuenger)


    Hallo Zusammen,

    Ich habe aktuell in meinem Child Theme in meiner functions.php ein recht einfaches CSS . Es hat bis kürzlich sehr gut funktioniert. Eigentlich macht das CSS auch jetzt noch seinen Job, aber zusätzlich printed es mitten in mein Layout, was zwischen den <style></style>-Tags steht – in meinem Fall zeigt es .element {display: none !important;} .

    Mein Code:
    echo'<style>.element {display: none !important;}</style>';
    Gab es ein Update für PHP oder WP, das dies nicht mehr zulässt? Gibt es eine andere Möglichkeit, dies zu tun?

    Vielen dank für Deine Hilfe!

    Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Eigentlich gibt es für eigenes CSS im Customizer ein Feld „Zusätzliches CSS“, wo du das eintragen kannst. Wenn du aber eine Funktion in der functions.php nutzen möchtest, kann das z.B. so aussehen:

    function my_custom_css() {
    ?>
     <style>
     .element {display: none;}
     </style>
    <?php }
    
    add_action( 'wp_head', 'my_custom_css' );

    Damit wird dann der CSS-Code im Dokumenten-Header ausgegeben und nicht an irgendwelchen anderen Stellen, wo du ihn nicht gebrauchen kannst.

    Auf !important solltest du nach Möglichkeit verzichten, weil sich das sehr schwer durch andere CSS-Regeln überschreiben lässt und deshalb viel Freude beim Debugging erzeugen kann. Besser ist es, den Selektor zu erweitern, um eine spezifischere CSS-Regel zu erstellen, also aus .element z.B. .entry-content .element machen.

    Thread-Ersteller mjuenger

    (@mjuenger)

    Danke für deine Rückmeldung.

    Mein Code sah sehr ähnlich aus, folgend:

    <?php
    	// Registrieren Button für eingeloggte User verstecken (für Bots aber anzeigen)
    	if( is_user_logged_in() and !is_a_bot() )
       {
    		echo "<style>.panda-register-button {display: none;}</style>";
       }

    Ich nutzen diesen um auf meinen Produktseiten (z.B.: hier https://portfolio.panda-office.at/produkt/aktenhuelle-a4-premium/) einen Login-Button für eingeloggte Besucher zu verstecken.

    Ich habe das Problem nun gelöst und zwar in dem ich den Code von der function.php in den head.php vor dem </head> verschoben habe. Es scheint nun wieder zu funktionieren.

    Unklar ist mir jedoch warum es Monatelang in der function.php funktioniert hat und nun plötzlich nicht mehr.

    Moderator Bego Mario Garde

    (@pixolin)

    Mit add_action( 'wp_head', 'name_der_funktion' ); führst du eine Funktion automatisch im Header des HTML-Dokuments aus. Dann brauchst du nichts in das Header-Template schreiben, wo eine Funktion ja auch nicht hingehört.

    Dein Code ergibt außerdem für mich keinen Sinn. Bots können sich bei dir in der Website einloggen? Oder was meinst du mit if( is_user_logged_in() and !is_a_bot() )?

    Wenn die Frage für dich beantwortet ist, ändere den Thread bitte noch auf „gelöst“.

    Thread-Ersteller mjuenger

    (@mjuenger)

    Alles klar, super. Danke für den Tipp.

    Dann setze ich das mit add_action( 'wp_head', 'name_der_funktion' ); um.

    Frage ist gelöst.

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)