不久前,我遇到了一个类似的问题,并在这里帮助回答了这个问题。我当时没有账户,也找不到原始帖子,否则我会链接它。如果我记得的话,Jan Fabry 几乎是给了我行军的命令,我砍下了一些东西。记住,我不知道你是如何将图像输入硬币滑块的。我想象你正在循环查看get\\u帖子的结果,并一次一张地吐出图像。无论如何,这里有一些代码。虽然很难看,但它很管用。
因此,首先,您可以使用“wp\\u insert\\u post”挂钩为插入到帖子内容中的任何图像添加唯一的元值。
add_action(\'wp_insert_post\', \'insertedImage_save_meta\');
function insertedImage_save_meta($post_id) {
$upPost = get_post($post_id);
$rawPostDoc = new DOMDocument();
@$rawPostDoc->loadHTML($upPost->post_content);
$imgs = $rawPostDoc->getElementsByTagName(\'img\');
foreach($imgs as $img){
$imgIDStr = substr($img->getAttribute(\'class\'), (stripos($img->getAttribute(\'class\'),\'wp-image-\')+9), 8);
$imgID = preg_replace("[^0-9]", \'\', $imgIDStr);
if($imgID !== false && $imgID !== \'\') { // double falsy check because of specific nature of stripos() returns coupled with the preg_replace return. Not sure if this is necessary.
if(get_post_meta($imgID, \'_inserted-image\', true) === \'\')
update_post_meta($imgID, \'_inserted-image\', \'yes\');
}
}
}
然后,在显示时,在图像对象中循环时,使用get\\u post\\u meta()调用检查唯一的meta,如果找到,则忽略吐出任何html。
因此,如果我使用foreach($images as$image)循环我的get\\u posts结果,我会这样做:
if ( get_post_meta( $image->ID, \'_inserted-image\', true ) === \'yes\' )
continue;
限制:如果插入的图像稍后从帖子内容中删除,但保留在帖子库中,则不会从图像中删除指定的元值。但是,如果在正文内容中找不到图像,可以很容易地扩展该功能,以检查所有帖子的附加图像,并删除meta标记。