CSS Werte "dynamisch" an style.css übergeben

  • Gemeinde,

    ich hoffe, die Überschrift ist nicht total bescheuert. Was ich will ist folgendes: Ich möchte gerne Farbwerte, die auf der Optionsseite (also im Backend) meines Themes eingegeben werden können an die style.css übergeben.

    Ich habe das jetzt testweise so gelöst. dass ich den kompletten Inhalt der style.css in eine style.php geschireben habe und dort kann ich dann natürlich auch per "echo" Werte dynamisch übergeben. Die style.php wird dann noch in der header.php eingebuden und gut isses.

    Das funktioniert natürlich auch, aber ist das eine gute Lösung? Gbt´s da nicht etwas schlaueres?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Im Prinzip hast du 3 Möglichkeiten:

    1) Die Lösung die du schon praktizierst.
    2) Du baust die style.css serverseitig zusammen
    3) Du nutzt einen inline-style-block

    So oder so müssen die Variablen durch den PHP-Parser geschickt werden.

    Gruß
    Mo

  • Siehe Morris.
    Ad Punkt 3)

    Code
    echo '<div style="background-color:"';
    $theme_colors = get_option(etc. 
    if($theme_colors) {
     echo $theme_colors->etc
    }

    zB

  • Hallo Michael!

    Twenty Ten nutzt add_custom_background().

    Gruß,
    Nick

  • Irgendwie stehe ich hier immer noch auf dem Schlauch. Ich möchte eigentlich keine zusätzlichen CSS Angaben in den Head schreiben. Ich möchte eine style.php nutzen. Das ist soweit ja auch völlig unspektakulär.

    Was ich irgendwie nicht hinbekomme ist, dass diese style.php die Werte, die auf der Optionsseite eingegeben werden auch lesen kann. Meine anderen Dateien, die Werte aus der Optionsseite übergeben bekommen haben oben folgendes stehen:

    PHP
    <?php
    //allows the theme to get info from the theme options page
    global $options;
    foreach ($options as $value) {
        if (get_option( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; }
        else { $$value['id'] = get_option( $value['id'] ); }
        }
    ?>

    Das kann ich aber in der style.php nicht verwenden, da es dort einen Fehler erzeugt.

    Ich hab dazu ein paar Sachen gefunden, blicke aber irgendwie nicht durch. Scheinbar geht es hier immer um zusätzliche CSS Dateien, was ich möglichst vermeiden will.

    http://wordpress.org/support/topic/388309

    Das kann doch eigentlich gar nicht so schwer sein, aber irgend etwas übersehe ich wohl.

  • PHP
    <?php
    //allows the theme to get info from the theme options page
    global $options;
    foreach ($options as $value) {
        if (get_option( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; }
        else { $$value['id'] = get_option( $value['id'] ); }
        }
    ?>

    Servus Michael,

    Ich hab keine Ahnung woher die globale Variable $options kommt. Falls die aus Deinem Theme ist, solltest Du die umbenennen. Da ist ein Konflikt schon vorprogrammiert (und glaub mir: Fehlern durch globale Vars nach jagen ist das Mühsamste überhaupt - die findest nie).

    Weiters.. So wie das derzeit geschrieben ist, passiert ca folgendes: Du rufst die globale $options auf, die vermutlich ein Array ist. Dieses Array beinhaltet jeweils den Namen eines Feldes im options DB-table. Und Du rufst jetzt aus der DB-Tabelle jeweils eine Option mit dem Namen $value auf. zB: $options = array('Dein_erster_optionsname', 'zweiter_optname', 'etc'); Und Du suchst dann in der Datenbank via get_option alle Optionen heraus, die einen Namen haben, der im $options Array angeführt wird und holst Dir davon jeweils den Wert vom Schlüssel ID... usw. Sei mir nicht böse, aber der Code ist ziemlich Quatsch. Lohnt sich nicht wirklich da weiter zu analysieren, wie das funktioniert. Ist der mit dem Theme so gekommen, oder von Dir? (Dann nehm ich das "Quatsch" gleich wieder zurück ;) )

    Kannst Du einmal erklären, wie Du Deine Optionen ablegst? Register_setting, etc? Dafür gibt's nämlich eine eigene API die im Codex und auf den Seiten von Ozh und Otto (Core Devs) ziemlich gut erklärt wird (sieh Links am Ende des Codex Eintrags). Wenn man das weiß, dann ist's nämlich gar nicht so schwer... :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!