您好,我正在gallery中创建我的自定义复选框,我已经添加了该复选框,但保存不起作用,有人可以看一下并告诉我在哪里应该放置元键吗?
function wporg_add_custom_box()
{
$screens = [\'attachment\'];
foreach ($screens as $screen) {
add_meta_box(
\'wporg_box_id\', // Unique ID
\'Custom Meta Box Title\', // Box title
\'wporg_custom_box_html\', // Content callback, must be of type callable
$screen // Post type
);
}
}
add_action(\'add_meta_boxes\', \'wporg_add_custom_box\');
function wporg_custom_box_html($post)
{
$value = get_post_meta($post->ID, \'_wporg_meta_key\', true);
?>
<input type="checkbox" name="include_in_image_gallery" <?php selected($value, $post->ID); ?> >
<?php
}
function wporg_save_postdata($post_id)
{
if (array_key_exists(\'wporg_field\', $_POST)) {
update_post_meta(
$post_id,
\'_wporg_meta_key\',
$_POST[\'include_in_image_gallery\']
);
}
}
add_action(\'save_post\', \'wporg_save_postdata\');
我的元密钥名称是:
include_in_image_gallery
我想在另一个子页面的wp\\u查询中使用该元。
有什么想法吗?谢谢并致以最良好的问候。
SO网友:Krzysiek Dróżdż
首先,在save函数中,if语句总是false。
我没有看到任何调用的输入wporg_field
元框中的任何位置,所以很可能没有这样的字段-因此条件为false,并且没有保存任何元字段。
另一个问题是,您对复选框的工作方式做出了错误的假设。如果未选中复选框,则不会在POST数组中发送该复选框。
这里有一个固定版本-应该可以:
function wporg_save_postdata($post_id)
{
if ( array_key_exists(\'include_in_image_gallery\', $_POST) ) {
update_post_meta(
$post_id,
\'_wporg_meta_key\',
$_POST[\'include_in_image_gallery\']
);
} else {
delete_post_meta($post_id, \'_wporg_meta_key\');
}
}