0
我在添加媒體彈出窗口中創建一個複選框,以在插入圖像時將HTML添加到$ html輸出。Wordpress自定義添加媒體
這工作正常。但是,一旦我添加了選中複選框的圖像。如果我嘗試再次添加它,並取消選中該複選框,它將不會註冊或保存更改。
因此,總是輸出修改的圖像,而不是一旦未選中就恢復到WP默認值。
加上勾選後,我選擇了它,並插入到頁面將保持預選每次我選擇該圖像。
如何按預期方式製作取消選擇複選框功能?
非常感謝幫助。謝謝
class media_uploader_cb{
function __construct(){
// attach our function to the correct hook
add_filter('attachment_fields_to_edit', array($this, 'attachment_fields_to_edit'), 10, 2);
//save attachment field
add_filter('attachment_fields_to_save', array($this, 'attachment_fields_to_save'), 10, 2);
//add custom css class
add_filter('media_send_to_editor', array($this, 'media_send_to_editor'), 10, 2);
}
/**
* Adding our custom checkbox field to the $form_fields array
*
* @param array $form_fields
* @param object $post
* @return array
*/
function attachment_fields_to_edit($form_fields, $post) {
$form_fields['add_class']['label'] = __("Add SEO Data");
$form_fields['add_class']['input'] = 'html';
$form_fields['add_class']['html'] = '<input type="checkbox" value="1" name="attachments['.$post->ID.'][add_class]" id="attachments['.$post->ID.'][add_class]" '.checked(1, get_post_meta($post->ID, 'add_class', true), false).'/>';
return $form_fields;
}
/**
* Saving our custom checkbox field
* @param array $post
* @param array $attachment
* @return array
*/
function attachment_fields_to_save($post, $attachment) {
if(isset($attachment['add_class'])){
update_post_meta($post['ID'], 'add_class', $attachment['add_class']);
}
return $post;
}
/**
* Adding our custom css class based on checkbox field
*
* @param string $html
* @param int $id
* @return string
*/
function media_send_to_editor($html, $id) {
//only add class if the checkbox was checked
if (1 == (int)get_post_meta($id, 'add_class', true)){
//change this to whatever you want
$seo_data_to_add = 'custom="HTML Output Here""';
// THIS SHOULD BE THE CHECKBOX
get_post_meta($id, 'add_class', true);
$attachment_title = get_the_title($id);
$title = 'title="'.$attachment_title .' by '. get_option('ews_opt_branding') .'"';
$html = str_replace('<img', '<img '.$title.' '.$seo_data_to_add.'', $html);
}
return $html;
}
}
new media_uploader_cb();