Where to put meta Keys

时间:2019-01-08 作者:Mariusz

您好,我正在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查询中使用该元。

有什么想法吗?谢谢并致以最良好的问候。

1 个回复
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\');
    }
}