如何在 PHP 中的图像下方添加 noscript 标签?
Posted
技术标签:
【中文标题】如何在 PHP 中的图像下方添加 noscript 标签?【英文标题】:How add noscript tag below image in PHP? 【发布时间】:2019-03-18 12:37:35 【问题描述】:我正在为我的图像使用延迟加载,作为Google pointed out,在每个 img 下方添加一个 noscript 标签至关重要。
我想在 Wordpress 编辑器中的每张图片下方添加一个 noscript 标签,类似于:
<figure>
<img src="img.jpg">
<nocript><img src="img.jp"></noscript>
<figcaption> Caption</figcaption>
<figure>
但我不能:(
这是我在 php 中的函数。
add_filter('the_content', function ($content)
$dom = new DOMDocument();
$dom->loadhtml($post->post_content);
foreach($dom->getElementsByTagName( 'img' ) as $img)
if ( $img->hasAttribute( 'src' ))
$src_attr = $img->getAttribute( 'src' );
$noscript = $dom->createElement( 'noscript' );
$noscript_node = $img->parentNode->insertBefore( $noscript, $img );
$noscript_img = $dom->createElement( 'IMG' );
$new_img = $noscript_node->appendChild( $noscript_img );
$new_img->setAttribute( 'src', $src_attr );
$content = $dom->saveHTML();
;
return $content;
);
请帮忙:D
【问题讨论】:
$content 返回什么? 它应该返回 noscript 标签,但 DOM 上没有返回任何内容 我明白了,我现在问, $content 包含什么?你 var_dump 了吗? 谢谢,我不知道var_dump(JS开发者)整个帖子被退回了 你让我想...我正在尝试使用 JS 自己编写类似版本的代码,你有没有 JS 中并行案例的简单示例? 【参考方案1】:在更新现有对象(或数组)时,如果按引用工作,使用 foreach 循环需要注意的事项
默认情况下,foreach 循环会创建项目的副本并在其上运行。要使用实际对象,您应该在之前添加 &
我还会注意到在实际 dom 分配中使用临时变量: 创建临时变量并使用它们的结果插入到对象中
但它应该可以工作
我也将 saveHTML 排除在循环之外,因为不需要中间保存
希望对你有帮助
下面是 &$img
add_filter('the_content', function ($content)
$dom = new DOMDocument();
$dom->loadHTML($post->post_content);
foreach($dom->getElementsByTagName( 'img' ) as &$img)
if ( $img->hasAttribute( 'src' ))
$src_attr = $img->getAttribute( 'src' );
$noscript = $dom->createElement( 'noscript' );
$noscript_node = $img->parentNode->insertBefore( $noscript, $img );
$noscript_img = $dom->createElement( 'IMG' );
$new_img = $noscript_node->appendChild( $noscript_img );
$new_img->setAttribute( 'src', $src_attr );
;
$content = $dom->saveHTML();
return $content;
);
【讨论】:
有一个错误,因为当我粘贴代码时,整个帖子没有显示,还有其他想法吗? @Alfrex92 将检查 l 我删除了 ;从 foreach 结束,我认为它不需要......也许它是。我修好了以上是关于如何在 PHP 中的图像下方添加 noscript 标签?的主要内容,如果未能解决你的问题,请参考以下文章