Ich habe kürzlich von der Verwendung einer benutzerdefinierten Klasse zum Aktivieren eines Themenoptionsfensters auf den integrierten Themenanpasser in Wordpress umgestellt.
Alles läuft ziemlich gut - ich habe eine Live-Vorschau, aber ich bin ein wenig damit beschäftigt, die Werte mit 'get_theme_mod ()' in einer dedizierten PHP -Datei abzurufen.
Mit meiner alten Klasse konnte ich 'dynamic.css.php' in die Warteschlange stellen, wobei ich 'wp-load.php' einfügte, um verschiedene Funktionen zum Abrufen von Optionen usw. zu verwenden benutzerdefinierte Funktion im Thema wp_head. Ich möchte es nicht wirklich so machen, es sei denn, es ist notwendig.
Also, ich starte gerade meine 'dynamic.css.php' Datei und sie sieht so aus:
<?php
header("Content-type: text/css; charset: UTF-8");
define( 'WP_USE_THEMES', false );
include('../../../../../wp-load.php'); ?>
@media all and (max-width: <?php echo get_theme_mod('nav-primary-breakpoint'); ?>) {
.drawer {
margin-top: 42px;
padding-top: 42px;
top: -42px;
}
}
So habe ich es früher gemacht, also habe ich im Grunde das Gleiche versucht, aber get_theme_mod () funktioniert überhaupt nicht.
Ich bin auch vorsichtig, wp-load.php wieder einzuschließen - ich hatte gehofft, eine ähnliche Methode wie zuvor zu verwenden, ohne sie tatsächlich einschließen zu müssen.
Meine Ziele sind also:
Ich habe auch versucht, den Import von wp-load.php zu entfernen und die Datei in den Kopf meines Themas aufzunehmen, aber dadurch wird die Ausgabe in den Body-Tag verschoben.
Irgendwelche Vorschläge zur Erreichung meiner Ziele hier?
@s_ha_dum ist richtig, das Ajax Plugin API ist der richtige Weg. Ich bin auf dieses Problem mit einer dynamischen js-Datei gestoßen, die ich vor einiger Zeit erstellt habe.
Grundsätzlich würden Sie Ihren Stil wie folgt einreihen:
wp_enqueue_style('dynamic-css',
admin_url('admin-ajax.php').'?action=dynamic_css',
$deps,
$ver,
$media);
Erstellen Sie dann eine Funktion zum Laden Ihrer dynamischen CSS-Datei:
function dynaminc_css() {
require(get_template_directory().'/css/dynamic.css.php');
exit;
}
Und fügen Sie die Ajax-Aktionen hinzu:
add_action('wp_ajax_dynamic_css', 'dynaminc_css');
add_action('wp_ajax_nopriv_dynamic_css', 'dynaminc_css');
wobei wp_ajax_*
die genannte Funktion auslöst und Zugriff auf alle grundlegenden WP-Funktionen für die Front hat; end wp_ajax_nopriv_*
führt nicht angemeldete Besucher aus
Beachten Sie, dass EDIT: Ich habe das gerade noch einmal getestet und kann es nicht wiederholen. Anscheinend gibt es keine solche Einschränkung.add_action('wp_ajax_custom_function', 'custom_function')
in einem Plugin in der Basisaktivierungsdatei des Plugins enthalten sein muss, da es sonst ignoriert wird. Es gibt eine knappe Anmerkung dazu im Aktionsreferenzdokument .
Diese Erklärung ist eine erweiterte Version dieses Codex-Forumsbeitrags: http://Wordpress.org/support/topic/best-way-to-create-a-css-file-dynamically#post-4857705