我的目标是将fancybox添加到我正在开发的站点中,但我只想在页面/帖子需要时将JS/CSS等排队。
我的想法是,我需要检查帖子或页面上的所有锚定标签,如果锚定标签链接到任何形式的图像(jpg、png、gif),那么我将把必要的资产排队。
这似乎是正确的方法吗?这是正则表达式的工作吗,不知何故应用于\\u内容的过滤器?
我对其他一切都没问题,只是需要测试。
下面的代码添加了.fancybox
类来创建链接到指定文件类型的所有锚点,以便我可以以某种方式检查类名?PS我不想使用插件来加载fancybox,我更愿意自己来做。
jQuery("a[href$=\'.jpg\'],a[href$=\'.png\'],a[href$=\'.gif\']").fancybox();
Update: 这是一个简单的检查,我到目前为止将检查锚的内容。只是需要适应有一个类名,我想我在那里,似乎工作正常。
function content_image_check( $content ) {
if( strpos( $content, "<a" ) ) {
echo \'yes\';
} else {
echo \'no\';
}
return $content;
}
add_filter(\'the_content\', \'content_image_check\');
Update 4
我正在使用XPath查询。这是我迄今为止最接近的一次。只有当页面上有包含图像的锚点时,它才会将css和js排队。我想修改查询,以便它可以找到类为“fancybox”的锚,但由于某些原因,当我尝试使用时,查询无法看到从jQuery添加的“fancybox”类名
$hrefs = $xp->query("//a/img/../@class[\'fancybox\']");
另一个选项是使用文件名以结尾的href按锚点排序。jpg。gif,png。我会很高兴的。
function content_image_check( $content ) {
$dom = new DOMDocument();
$dom->loadHTML($content);
$xp = new DOMXPath( $dom );
$hrefs = $xp->query("//a/img/../@href");
$count = $hrefs->length;
print_r( $count);
return $content;
}
if ( $count ) {
wp_enqueue_script( \'fancybox\' ); // js
wp_enqueue_style( \'fancybox\' ); // css
}
add_filter(\'the_content\', \'content_image_check\');
很明显,我已经在其他地方注册了css和js,并且只在需要时将其排队。