最後算出了一個粗略的工作解決方案。這可能不是最終版本,但對於任何可能感興趣的人來說,這都是我的解決方案。
function gotImages()
{
global $wp_query;
$posts = $wp_query->posts;
if (empty($posts))
return $posts;
$searchImages = '~<img [^>]* />~';
foreach ($posts as $post) {
$content = $post->post_content;
preg_match_all($searchImages, $content, $countImages);
$images += count($countImages[0]);
}
return ($images >= 1 ? true : false);
}
要是放的functions.php將通過電流回路的內容讀取和掃描它<IMG>
標籤此功能。如果找到一個或多個標籤,則返回true,否則返回false。
現在我可以使用它來有條件地排隊腳本或樣式表,具體取決於帖子是否有任何圖像。
例如像這樣:
if(!is_admin() && gotImages() == true) :
wp_register_script('fancybox', get_stylesheet_directory_uri() . '/libs/fancybox/jquery.fancybox.pack.js', array('jquery'), false, true);
wp_register_script('fancybox.init', get_stylesheet_directory_uri() . '/js/init/lightbox.init', array('fancybox'), false, true);
wp_enqueue_script('fancybox');
wp_enqueue_script('fancybox.init');
endif;
我還沒有確定「昂貴」這個功能是如何,但我的工作就可以了現場非常小所以現在不是它的一個大問題處理時間增加了幾個ms。
它似乎只是檢查循環中的第一篇文章。如果超過1,我需要弄清楚如何循環其餘部分。函數的返回值只是決定Wordpress是否應該將javascript排入隊列,因此與類或ID無關。 – Brigante 2012-01-11 17:19:40
@Johannes你可以發佈你的PHP的主頁? – dyelawn 2012-01-11 17:35:36
現在不在我的電腦,但它是默認的Twentyeleven主題。順便說一句我在functions.php中調用函數,所以它在循環之外。 – Brigante 2012-01-11 18:04:56