Ich brauchte eine Möglichkeit, um den Inhalt einer Seite / eines Beitrags zu filtern, bevor er geladen wurde, damit ich dem Header Skripte hinzufügen konnte, wenn ein bestimmter Shortcode vorhanden war. Nach langem Suchen bin ich auf http://wpengineer.com gestoßen
function has_my_shortcode($posts) {
if ( empty($posts) )
return $posts;
$found = false;
foreach ($posts as $post) {
if ( stripos($post->post_content, '[my_shortcode') )
$found = true;
break;
}
if ($found){
$urljs = get_bloginfo( 'template_directory' ).IMP_JS;
wp_register_script('my_script', $urljs.'myscript.js' );
wp_print_scripts('my_script');
}
return $posts;
}
add_action('the_posts', 'has_my_shortcode');
Das ist absolut genial und hat genau das getan, was ich brauchte.
Jetzt muss ich es ein bisschen weiter ausbauen und das Gleiche für Sidebars tun. Es kann sich um einen bestimmten Widget-Typ, einen Shortcode, ein Code-Snippet oder irgendetwas anderes handeln, um zu identifizieren, wann das Skript geladen werden muss.
Das Problem ist, dass ich nicht herausfinden kann, wie ich auf den Inhalt der Seitenleiste zugreifen kann, bevor die Seitenleiste geladen wird (das betreffende Thema hat mehrere Seitenleisten).