Ich habe meine style.php
Datei so aussehen.
<?php header('Content-Type: text/css');?>
#div{
background:<?php echo get_option('bgcolor');?>;
}
Das funktioniert nicht, aber wenn ich das tue, funktioniert es.
<?php header('Content-Type: text/css');?>
#div{
background: <?php echo 'blue';?>;
}
Was wäre das Problem?
Dies ist die mainfile.php
<?php
function test(){
global get_option('bgcolor');?>
<input type="text" id="bgcolor" name="post_popup_settings[bgcolor]" value="<?php echo get_option('bgcolor');?> " />
<?php
}
add_action('admin_head','test');
Dies ist eigentlich im Admin-Bereich.
style.php
. Wenn die Stildatei nicht von WordPress aufgerufen wird, ist keine WordPress-Funktion verfügbar.Antworten:
WordPress-Funktionen sind nur verfügbar, wenn WordPress geladen ist. Wenn Sie
style.php
direkt anrufen, können Sie keine WordPress-Funktion verwenden.Eine einfache Möglichkeit, WordPress für Ihr PHP-gesteuertes Stylesheet zu laden, besteht darin, WordPress einen Endpunkt hinzuzufügen: eine benutzerdefinierte, reservierte URL, unter der Sie Ihre Vorlagendatei laden.
Um dorthin zu gelangen, müssen Sie:
Registrieren Sie einen Endpunkt
'init'
mitadd_rewrite_endpoint()
. Nennen wir es'phpstyle'
.Hängen Sie sich ein
'request'
und stellen Sie sicher, dass die Endpunktvariable'phpstyle'
nicht leer ist, wenn sie festgelegt ist. Lesen Sie Christopher Davis 'hervorragendes A (Mostly) Complete Guide zur WordPress Rewrite API, um zu verstehen, was hier vor sich geht.Hängen Sie an
'template_redirect'
und liefern Sie Ihre Datei anstelle der Standardvorlagendateiindex.php
.Um die Sache kurz zu halten, habe ich im folgenden Demo-Plugin alle drei einfachen Schritte in einer Funktion zusammengefasst.
Plugin PHP Style
Installieren Sie das Plugin, besuchen Sie
wp-admin/options-permalink.php
einmal, um die Umschreiberegeln zu aktualisieren, und fügen Sie einstyle.php
zu Ihrem Thema hinzu.Probe
style.php
Jetzt besuchen
yourdomain/phpstyle/
. Ausgabe:Aber wenn Sie zur
yourdomain/phpstyle/blue/
Ausgabe gehen, ist:Sie können den Endpunkt also verwenden, um abhängig vom Wert von verschiedene Stylesheets mit einer Datei zu liefern
get_query_var( 'phpstyle' )
.Vorbehalt
Dies wird Ihre Website verlangsamen. WordPress muss bei jedem Besuch zweimal geladen werden . Tun Sie es nicht ohne aggressives Caching.
quelle
get_query_var( 'phpstyle' ) AND ! defined( 'SHORTINIT' ) AND define( 'SHORTINIT', true )
um die dinge zu beschleunigen ... und wenn dann alle benötigten funktionen zurSie könnten dies tun, indem Sie die Ausgabe über laden.
admin-ajax.php
Ein besserer Ansatz besteht darin, die WordPress-SHORTINIT
Konstante zu verwenden, damit Sie genau die Funktionen laden können, die Sie benötigen.wp-load.php
Dazu müssen Sie jedoch Folgendes finden und laden :An dieser Stelle werden Sie müssen sicher sein , enthalten , was andere
wp-includes
Dateien , die Sie Ihr Thema Optionen erhalten müssen - das variiert je nach , wie Sie sparen und damit diejenigen erreichbar. (Wahrscheinlich müssen Sie dieser Liste weitere hinzufügen, damit Sie keine schwerwiegenden Fehler erhalten. Im weiteren Verlauf werden Sie jedoch anhand der schwerwiegenden Fehler darüber informiert, welche Dateien Sie hinzufügen müssen.) Beispiel:Sobald Sie alle Funktionen haben, die Sie benötigen, können Sie das CSS mit diesen Funktionen ausgeben ... zB.
Anschließend können Sie die Datei wie gewohnt in die Warteschlange einreihen. Beispiel:
quelle
../../
auf demwp-load.php
Pfad nicht, die angegebene Funktion wird es für Sie so finden, wie es ist ... aber wie ich bereits sagte, Sie müssen alle benötigten Dateien mit den von Ihnen verwendeten Funktionen finden und einschließen , z.get_background_image
is intheme.php
etc ... Wenn Sie das CSS erweitern, benötigen Sie möglicherweise mehr. Daher müssen Sie lernen, wie Sie sie finden, um diese Methode effektiv und zuverlässig verwenden zu können.