因此,有些事情(现在)的效果不同。
一、 您注意到,当您单击复选框Wordpress向“wp\\u Ajax\\u save\\u attachment\\u compat()”发送一个Ajax请求以及一些表单数据时,如果您选中了复选框,这些信息将成为表单数据的一部分。
“wp\\u ajax\\u save\\u attachment\\u compat()”检查$\\u请求[\'attachments\']和$\\u请求[\'attachments\'][$id],如果它不存在,将失败。
这意味着您必须将输入字段更改为:
<input type=\'checkbox\' name=\'attachments[$post->ID][ab_prettyphoto]\' id=\'ab_prettyphoto-{$post->ID}\' value=\'1\' />
二。现在,这将通过“wp\\u ajax\\u save\\u attachment\\u compat”中的所有检查,并得到一个有用的过滤器:(这是ajax actions.php中的第1930行)
$post = apply_filters( \'attachment_fields_to_save\', $post, $attachment_data );
您可以使用此筛选器将字段数据作为post meta添加到附件中,稍后,您将检查此post meta是否存在,如果为true,则执行操作:
add_filter(\'attachment_fields_to_save\', \'wpse76219_add_meta\',10,2);
function wpse76219_add_meta($post, $attachment_data){
// use this filter to add post meta if key exists or delete it if not
if ( !empty($attachment_data[\'ab_prettyphoto\']) && $attachment_data[\'ab_prettyphoto\'] == \'1\' )
update_post_meta($post[\'ID\'], \'ab_prettyphoto\', true);
else
delete_post_meta($post[\'ID\'], \'ab_prettyphoto\');
// return $post in any case, things will break otherwise
return $post;
}
III.最后一步,使用“media\\u send\\u to\\u editor”检查元数据是否存在,如果存在,请执行字符串操作,否则返回原始数据:
add_filter(\'media_send_to_editor\', \'wpse76219_send_to_editor\', 10,3);
function wpse76219_send_to_editor( $html, $id, $att)
{
$is_set = get_post_meta($id,\'ab_prettyphoto\', true);
if ($is_set and $is_set == \'1\')
return str_replace(\'<a\', \'<a rel="prettyPhoto-img"\', $html);
else
return $html;
}