将元数据添加到附件页面

时间:2015-10-11 作者:LZL0

我的脚本无法保存下拉框的值。我找不到有关此主题的任何有用文档,因此我决定询问StackExchange社区。

function _cc_add_our_attachment_meta() {
   add_meta_box( \'cc-license-attachment-meta-box\', \'License of the Attachment\', \'_cc_our_attachment_meta_box_callback\', \'attachment\', \'normal\', \'low\');
}
add_action( \'admin_init\', \'_cc_add_our_attachment_meta\' );

function _cc_our_attachment_meta_box_callback() {
     global $post; 
     $value = get_post_meta($post->ID, \'_license\', false);
     if($value == \'\')
     {
     $value = \'0\';
     }
?>
<p>Choose a license for this file</p>
<select name="license_id">
<option value="0" <?php selected( \'0\', $value ); ?>>License 1</option>
<option value="1" <?php selected( \'1\', $value ); ?>>License 2</option>
<option value="2" <?php selected( \'2\', $value ); ?>>License 3</option>
<option value="3" <?php selected( \'3\', $value ); ?>>License 4</option>
<option value="4" <?php selected( \'4\', $value ); ?>>License 5</option>
<option value="5" <?php selected( \'5\', $value ); ?>>License 6</option>
</select>
<?php
}

function _cc_attachment_save_our_attachment_meta($post_ID) {
    if( isset( $_POST[\'license_id\'] ) ) {
        $license = $_POST[\'license_id\'];
        switch($license)
        {
            case 0: $license = \'0\';
            case 1: $license = \'1\';
            case 2: $license = \'2\';
            case 3: $license = \'3\';
            case 4: $license = \'4\';
            case 5: $license = \'5\';
            default: $license = \'0\';
        }
        update_post_meta( $post_ID, \'_license\', $license );
    }
}

add_action(\'edit_attachment\', \'_cc_attachment_save_our_attachment_meta\', 10, 1);

2 个回复
SO网友:Milo

get_post_meta 将第三个参数设置为时返回数组false, 所以$value 是元盒回调中的数组,您将其视为字符串。我假设附件的许可证只有一个值,所以您希望将其设置为true 相反

SO网友:LZL0

function _cc_attachment_save_our_attachment_meta($post_ID) {
    if( isset( $_POST[\'license_id\'] ) ) {
        $license = $_POST[\'license_id\'];
        switch($license)
        {
            case 0: $license = \'0\'; break 1;
            case 1: $license = \'1\'; break 1;
            case 2: $license = \'2\'; break 1;
            case 3: $license = \'3\'; break 1;
            case 4: $license = \'4\'; break 1;
            case 5: $license = \'5\'; break 1;
            default: $license = \'0\'; break 1;
        }
        update_post_meta( $post_ID, \'_license\', $license );
    }
}

add_action(\'edit_attachment\', \'_cc_attachment_save_our_attachment_meta\', 10, 1);
增加一些休息时间可以解决问题。

相关推荐

保存Metabox内容无效

我正在尝试保存一个metabox输入,但它似乎不起作用。我使用的是数组(因为我需要我的metabox有60行),所以我假设问题就出在数组中。这是我为管理员提供的metabox函数(它可以正确显示我要显示的信息):function mock_metabox() { global $post; // Nonce field wp_nonce_field( basename( __FILE__ ), \'mock_fields\' ); // in