默认WordPress库img标记关闭,如<img>
这是无效的XHTML。我使用的lazyload XT插件以有效的XHTML img标记为目标,这意味着结束应该是:
<img src="http://www.acaciafotografia.com/wp-content/themes/jamdxstarter/img/tri.jpg"/>
而不是
<img src="http://www.acaciafotografia.com/wp-content/themes/jamdxstarter/img/tri.jpg">
如何过滤或修改此选项,以便lazyload正常工作?
Issue explained by author of wp lazyload XT integration.
我使用的主题是下划线,它修改了WP库的标记,使其符合HTML5。这在Lazyload XT中不起作用,它获取以“/>”结尾的XHTML img标记,而HTML5 img标记不需要以“>”结尾
在里面functions.php
我注释掉了以下行:
/*
* Switch default core markup for search form, comment form, and comments
* to output valid HTML5.
*/
add_theme_support( \'html5\', array(
\'search-form\',
\'comment-form\',
\'comment-list\',
// \'gallery\',
\'caption\',
) );
SO网友:Tim Malone
像linked to 根据对您问题的评论post_gallery filter 应该在这里帮助你。
但与许多其他挂钩不同的是,您无法过滤来自WordPress的输出;您只能提供自己的可选输出。这有点烦人,导致您需要从头开始构建库。不过,您可以通过一些额外的代码来实现这一点linked StackOverflow answer 提供了一个示例(但奇怪地使用<div src>
, 所以把它改成<img src>
- 然后从默认的WordPress标记中提取其余部分,确保关闭<img />
标签)。
另一种方法是使用the_content
filter 还有一些聪明的规则。你需要小心,因为如果你没有考虑到所有潜在的情况,你的正则表达式可能会捕捉到一些你不想捕捉的东西。这正是本例中插件作者所面临的问题trying to avoid.
话虽如此,这里有一个潜在的解决方案。根据您的需要进行修改,但是don\'t rely on this as a 100% foolproof solution.
// priority must be more than 10, so it runs after the gallery shortcode does
add_filter( \'the_content\', \'wpse231040_close_gallery_img_tags\', 11);
function wpse231040_close_gallery_img_tags ( $html ) {
if ( strpos ( $html, \'#gallery-\' ) === false ) { return $html; }
// make sure there\'s at least one gallery before running the more expensive preg_replace
$html = preg_replace(
\'/
(
\\<dl.*?class=["\\\'].*?gallery-item[\\s"\\\'].*? # look inside a <dl> with gallery-item class
\\<dt.*?class=["\\\'].*?gallery-icon[\\s"\\\'].*? # look inside a <dt> with gallery-icon class
\\<img\\s # look inside an <img> tag
)
(.*?)\\> # match the attributes inside the tag
/sx\',
\'$1$2 />\', // add the initial content, the img tag attributes, and finally a closing />
$html
);
return $html;
}
SO网友:birgire
默认wordpress库img标记关闭,XHTML无效
据我所知,情况并非如此。
本地画廊uses wp_get_attachment_image()
生成每个图像标记,并wp_get_attachment_link()
, 这是一个包装wp_get_attachment_image()
, 获取图像链接。
这个output 属于wp_get_attachment_image()
是:
$html = rtrim("<img $hwstring");
foreach ( $attr as $name => $value ) {
$html .= " $name=" . \'"\' . $value . \'"\';
}
$html .= \' />\';
在这里,我们可以明确地看到
/>
正在关闭。