在Wordpress中,我正在尝试将jQuery库的脚本排入队列,仅用于获取附件的帖子。
我有一个适用于单个帖子的简单功能:
function gotImages()
{
$attachments = get_children( array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image') );
return ( !empty($attachments) ? true : false );
}
当我在functions.php中调用gotImages()时,对于带有附件的单个帖子,它返回true,但如果第一个帖子没有附件,则对于包含多个帖子的主页返回false。
如何修改此功能以便它适用于多个帖子,即在我显示10个帖子的主页上?
谢谢!
答案 0 :(得分:0)
如果您在显示十个帖子中的每个帖子时都在主页的循环中,那么按原样调用它应该会产生所需的结果。它是否适用于多个帖子取决于您用于运行幻灯片的css选择器。如果您使用的是CSS ID,那么您的HTML将无效,因为您将拥有多个具有相同ID的元素。
答案 1 :(得分:0)
最后找出了一个粗略的解决方案。它可能不是最终版本,但这是我可能感兴趣的任何人的解决方案。
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;
我不确定这个功能的价格有多贵,但是我正在研究它的网站非常小,所以现在它不是很大,它会为处理时间增加几毫秒。