Ich führe eine Funktion auf Seiten aus, auf denen der Shortcode [make-me-a-map]
verwendet wird. Es fügt Javascript in die Seite ein und erstellt eine Karte. Dieser Teil funktioniert gut (woot!), Aber ich habe Probleme damit, die Stylesheets auf ähnliche Weise nur diesen Seiten hinzuzufügen.
functions.php (Aktuell)
add_shortcode("make-me-a-map", "create_new_map");
add_action("wp_head", "style_my_new_map");
function create_new_map () {
global $new_map_called_for;
$map_called_for = true;
wp_register_script('make-a-new-map', get_template_directory_uri() . '/js/new-map.js', array('jquery'), '0.1', true);
wp_enqueue_script('make-a-new-map');
}
function style_my_new_map() {
global $new_map_called_for;
if ($new_map_called_for == true) {
$tDir = get_template_directory_uri();
// Echo stylesheets because wp_register_style & wp_enqueue_style don't work atm
// And add_action('wp_enqueue_script', 'style_my_new_maps') with those functions would add style to all pages
// Not just the ones with [make-me-a-map] shortcode
echo "<link rel='stylesheet' href='", $tDir, "/css/new-map.css' />", PHP_EOL;
// Echo Javascript straight to page (couldn't do it with wp_enqueue_script) to let js code know the template directory
echo '<script type="text/javascript">var templateDir = "', get_template_directory_uri(), '";</script>', PHP_EOL;
$map_called_for = false;
}
}
Dies scheint leider nicht zu funktionieren. Die Stile werden allen Seiten hinzugefügt.
Ich habe wp_register_style & wp_enqueue_style nicht verwendet, da dieser Fehler immer noch <Link />
Tags aus diesen Funktionen zur Fußzeile hinzufügt .
Ich hätte add_action("wp_enqueue_scripts", "style_my_new_map")
stattdessen verwenden können, add_action('wp-head', "style_my_new_map")
aber soweit ich sehen und überprüfen kann, gibt es keinen Unterschied? Fügt die Stylesheets weiterhin allen Seiten hinzu.
Meine Frage besteht also eigentlich aus zwei Teilen: :)
- Warum funktioniert die aktuelle functions.php nicht und fügt allen Seiten Stile hinzu? Ich bin mir nicht sicher, ob es der
global
Anruf oder der istif
Aussage ist ... - Wie kann ich die Stylesheets am besten nur in den Header der Seiten einfügen, auf denen der obige Shortcode verwendet wird, vorausgesetzt, ich kenne die Seiten-IDs usw. nicht?
Danke im Voraus! P.