Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 修复现有帖子中不匹配的图像类_Php_Wordpress_Image - Fatal编程技术网

Php 修复现有帖子中不匹配的图像类

Php 修复现有帖子中不匹配的图像类,php,wordpress,image,Php,Wordpress,Image,在迁移我的wordpress站点之后,我发现我在现有帖子中的一些图像的图像类不匹配。然而,我无法想出任何自动方法来解决这个问题 众所周知,当图像插入帖子时,wordpress会指定一个图像类并自动生成一些标记,如下所示: <img class=" size-full wp-image-YYYYY aligncenter" src="https://......XXXXX.jpg"> “wp image-”代码中的yyyy正好是图像的ID 但是,在我的站点中,可能是由于迁移过程中

在迁移我的wordpress站点之后,我发现我在现有帖子中的一些图像的图像类不匹配。然而,我无法想出任何自动方法来解决这个问题

众所周知,当图像插入帖子时,wordpress会指定一个图像类并自动生成一些标记,如下所示:

<img class=" size-full wp-image-YYYYY aligncenter" src="https://......XXXXX.jpg">

“wp image-”代码中的yyyy正好是图像的ID

但是,在我的站点中,可能是由于迁移过程中发生了一些错误,我的一些图像的图像ID有点偏离。例如,在我的新站点中,原始图像ID 10000现在是10002。但是,在post内容中,图像的标记仍然是
wp-image-10000
。这会产生一个问题,即关联的图像类与正确的图像id不匹配,并且图像没有响应

这个问题的明显解决方法是在帖子中将
wp-image-yyyy
代码更新为正确的图像ID(即将
wp-image-10000
更改为
wp-image-10002
)。或者,我可以将图像重新插入帖子,wordpress会相应地重新分配一个正确的图像类。但是,鉴于我有数百篇现有帖子和数千张现有图片,我无法手动检查每个图片的图片类是否正确

虽然我对编码一无所知,但我已尝试在以下网站中运行代码,并尝试将代码从
if(!$has_class)
扭曲到
if($has_class)
以适合我的场景,但它根本不起作用:


如果有人能为我的问题提供一个自动化的解决方案,我将不胜感激。非常感谢。

通过链接中提到的代码,您可以进行更多的调整,以解决您的问题,因为您不需要附加类,而需要替换类

function lwp_attachment_id_class( $attr, $attachment ) {

    $class_attr = isset( $attr['class'] ) ? $attr['class'] : '';
    $has_class = preg_match(
        '/wp\-image\-[0-9]+/',
        $class_attr,
        $matches
    );

    // Check if the image is missing the class
    if ( $has_class ) {
        $new_class = sprintf( ' wp-image-%d', $attachment->ID );
        foreach($matches as $match)
            $attr['class'] = str_replace($match, $new_class, $attr['class']);
    }
    return $attr;
}

add_filter(
    'wp_get_attachment_image_attributes', 'lwp_attachment_id_class', 10, 2
);

谢谢你的帮助。但代码似乎没有按预期工作。当我在functions.php中添加代码后检查图像元素时,该类仍然是wp image-(不正确的id)。出于测试目的,我尝试删除图像的图像类,并在原始链接中应用代码自动创建图像类。原来原来的代码在我的网站上也不起作用。我想知道出了什么问题。