問題描述
下面的程式碼將一個自定義輸入欄位新增到附件編輯器。如何將文字輸入轉換為核取方塊,並獲取/設定載入核取方塊的值並儲存?
注意:"input" => "checkbox"不工作:(
function image_attachment_fields_to_edit($form_fields, $post) {
$form_fields["imageLinksTo"] = array(
"label" => __("Image Links To"),
"input" => "text",
"value" => get_post_meta($post->ID, "_imageLinksTo", true)
);
return $form_fields;
}
function image_attachment_fields_to_save($post, $attachment) {
if( isset($attachment['imageLinksTo']) ){
update_post_meta($post['ID'], '_imageLinksTo', $attachment['imageLinksTo']);
}
return $post;
}
add_filter("attachment_fields_to_edit", "image_attachment_fields_to_edit", null, 2);
add_filter("attachment_fields_to_save", "image_attachment_fields_to_save", null, 2);
最佳解決方案
將’input’ 設定為’html’,並輸出輸入的 html:
function filter_attachment_fields_to_edit( $form_fields, $post ) {
$foo = (bool) get_post_meta($post->ID, 'foo', true);
$form_fields['foo'] = array(
'label' => 'Is Foo',
'input' => 'html',
'html' => '<label for="attachments-'.$post->ID.'-foo"> '.
'<input type="checkbox" id="attachments-'.$post->ID.'-foo" name="attachments['.$post->ID.'][foo]" value="1"'.($foo ? ' checked="checked"' : '').' /> Yes</label> ',
'value' => $foo,
'helps' => 'Check for yes'
);
return $form_fields;
}
儲存工作正如上面所述,但是您正在檢查核取方塊值,因此您需要更新為 true if isset() 並將其更新為 false(如果不是) 。
次佳解決方案
以下是新增 IsLogo 核取方塊的完整塊,包括儲存:
function attachment_fields_to_edit_islogoimage( $form_fields, $post ) {
$islogo = (bool) get_post_meta($post->ID, '_islogo', true);
$checked = ($islogo) ? 'checked' : '';
$form_fields['islogo'] = array(
'label' => 'Logo Image ?',
'input' => 'html',
'html' => "<input type='checkbox' {$checked} name='attachments[{$post->ID}][islogo]' id='attachments[{$post->ID}][islogo]' />",
'value' => $islogo,
'helps' => 'Should this image appear as a proposal Logo ?'
);
return $form_fields;
}
add_filter( 'attachment_fields_to_edit', 'attachment_fields_to_edit_islogoimage', null, 2 );
function attachment_fields_to_save_islogoimage($post, $attachment) {
$islogo = ($attachment['islogo'] == 'on') ? '1' : '0';
update_post_meta($post['ID'], '_islogo', $islogo);
return $post;
}
add_filter( 'attachment_fields_to_save', 'attachment_fields_to_save_islogoimage', null, 2 );
我的 2 美分
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。