Wordpress 将所选选项保存在元框中

Wordpress 将所选选项保存在元框中,wordpress,meta-boxes,Wordpress,Meta Boxes,我要建立我自己的主题 我尝试将选择添加到post_类型的元框,但每次更新后,我的选择不会显示在所选选项上,而是显示第一个选项(空白值) 这是我的密码 function mhs_data() { global $post; echo '<input type="hidden" name="eventmeta_noncename" id="eventmeta_noncename" value="' . wp_create_nonce( plugi

我要建立我自己的主题 我尝试将选择添加到post_类型的元框,但每次更新后,我的选择不会显示在所选选项上,而是显示第一个选项(空白值)

这是我的密码

function mhs_data() {
        global $post;
        echo '<input type="hidden" name="eventmeta_noncename" id="eventmeta_noncename" value="' .
        wp_create_nonce( plugin_basename(__FILE__) ) . '" />';

        $nisn = get_post_meta($post->ID, '_nisn', true);
        $rel = get_post_meta($post->ID, '_rel', true);
    }

            echo '<p>NISN</p>';
            echo '<input type="text" name="_nisn" value="' . $nisn  . '" class="widefat" />';
            echo '<p>Relationship</p>'; ?>

            <select name="_rel" id="_rel">
                <option value="">Relationship</option>
                <option value="Single" <?php selected( $rel, 'Single' ); ?>>Single</option>
                <option value="Marry" <?php selected( $rel, 'Marry' ); ?>>Marry</option>
            </select>

            <?php 
    }

    function mhs_data_meta($post_id, $post) {
        if ( !wp_verify_nonce( $_POST['eventmeta_noncename'], plugin_basename(__FILE__) )) {
        return $post->ID;
        }
        if ( !current_user_can( 'edit_post', $post->ID ))
            return $post->ID;

        $events_meta['_nisn'] = $_POST['_nisn'];
        $events_meta['_rel'] = $_POST['_rel'];

        foreach ($events_meta as $key => $value) { 
            if( $post->post_type == 'revision' ) return; 
            $value = implode(',', (array)$value); 
            if(get_post_meta($post->ID, $key, FALSE)) { 
                update_post_meta($post->ID, $key, $value);
            } else {
                add_post_meta($post->ID, $key, $value);
            }
            if(!$value) delete_post_meta($post->ID, $key);
        }
    }

    add_action('save_post', 'mhs_data_meta', 1, 2);
函数mhs_data(){
全球$员额;
回声';
$nisn=get_post_meta($post->ID,'u nisn',true);
$rel=get_post_meta($post->ID,'u rel',true);
}
回声'NISN

'; 回声'; 回显“关系”

”;?> 关系 >结婚 使用它非常简单的tu将元盒添加到您的自定义帖子中,创建配置页面、插件、分类法,如果您喜欢使用自定义程序而不是配置页面,请使用自定义程序。有关更多信息,请参阅文档

在您的示例中,要添加select metabox,应使用类似以下代码:

functions.php上加载框架

require_once __DIR__ . '/'.$FRAMEWORK_PATH.'/cs-framework/cs-framework.php';
编辑cs framekork.php配置文件,仅激活所需的功能:

defined('CS_ACTIVE_FRAMEWORK') or define('CS_ACTIVE_FRAMEWORK', false); // if you need it for plugin or configuration page
defined('CS_ACTIVE_METABOX') or define('CS_ACTIVE_METABOX', true);      // if you only need it for metabox
defined('CS_ACTIVE_TAXONOMY') or define('CS_ACTIVE_TAXONOMY', false);
defined('CS_ACTIVE_SHORTCODE') or define('CS_ACTIVE_SHORTCODE', false);
defined('CS_ACTIVE_CUSTOMIZE') or define('CS_ACTIVE_CUSTOMIZE', false);
然后在function.php中,或者在function.php中包含的另一个文件中注册您的元数据库

function register_this_metabox($options)
{

    $options = array(); // this will clean the default cs-framework configuration

    $options[] = array(
        'id' => 'the_metabox',
        'title' => 'Meta Box title',
        'post_type' => 'post', // the post type where the metabox appears
        'context' => 'side',   // metabox position
        'priority' => 'high',
        'sections' => array(   // metabox fields, see the documentation
            array(
                'name' => 'the_metabox_fields',
                'fields' => array(
                    array(
                        'id' => 'the_metabox_select_field',
                        'type'           => 'select',
                        'title'          => 'Select Field',
                        'options'        => array(
                             'opt1'   => 'Option 1',
                             'opt2'   => 'Option 2',
                             'opt3'   => 'Option 3',
                         ),
                        'default_option' => 'Select a option',
                     ),
                ),
            ),
        ),
    );
    return $options;
}

add_filter('cs_metabox_options', 'register_this_metabox');
现在,您只需获取主题中的值:

$post_metabox = get_post_meta($post->ID, 'the_metabox', true);
$selected_option = $post_metabox['the_metabox_select_field']

我建议您使用非常简单且功能强大的框架,以节省此类工作的时间。我必须学习代码及其工作原理,感谢您的回答,但我认为您喜欢垃圾评论(评论包含链接),而不是给我学习代码的正确解决方案