如何使用ADD_META_BOX保存和获取选定项ID列表

时间:2021-02-11 作者:Nima Lalzad

您好,我需要为我创建的页脚和页眉帖子类型在页面中创建元数据库,在这段代码中,我尝试了这一点,但我无法保存所选项目并在前端检索id所选项目。

function wpdocs_register_meta_boxes() {
    add_meta_box( \'meta-box-id\', __( \'header\', \'textdomain\' ),\'wpdocs_my_display_callback\', \'page\', \'normal\' , \'high\');
}
add_action( \'add_meta_boxes\', \'wpdocs_register_meta_boxes\' );
 

function wpdocs_my_display_callback() {

    ?>

    <select name="count" id="selectId" >
    <?php  

    $posts = new WP_Query(array(\'posts_per_page\' => -1, \'post_type\' => \'header\')); 
    while($posts->have_posts()) : $posts->the_post(); ?>
       <option id="selection" value="<?php echo get_the_ID(); ?>"><?php echo get_the_title(); ?></option>
    <?php endwhile;
    die()
    ?>
    </select>
   <?php 
}
 

function wpdocs_save_meta_box( $post_id ) {


    if (isset($_POST[\'selectId\'])) {

        update_post_meta( $post_id, \'selectId\', $_POST[\'selectId\']);
    }


}
add_action( \'save_post\', \'wpdocs_save_meta_box\' );

1 个回复
SO网友:Prappo

您的代码几乎没有问题

首先,

选择字段的名称与您试图使用全局变量保存的名称不同$_POST. 你在存钱$_POST[\'selectId\'] 数据,但它不存在于元框中。您将选择字段命名为;“计数”;但是尝试使用"selectId"

第二,

您需要获取保存的值,并使用它与要选择的选择字段值进行比较

你的wpdocs_my_display_callback 函数将如下所示来设置所选值

    function wpdocs_my_display_callback()
    {
        global $post;
        $saved_value = get_post_meta($post->ID, \'selectId\', true);
    ?>
    
        <select name="selectId" id="selectId">
            <?php
    
            $posts = new WP_Query(array(\'posts_per_page\' => -1, \'post_type\' => \'header\'));
            while ($posts->have_posts()) : $posts->the_post(); ?>
                <option <?php selected($saved_value, get_the_ID()); ?> id="selection" value="<?php echo get_the_ID(); ?>"><?php echo get_the_title(); ?></option>
            <?php endwhile;
            // die()
            ?>
        </select>
    <?php
    }

我想现在可以了。

相关推荐

Metabox types list

例如,在下面的代码段中,有一些类型用于自定义metabox输入字段,如text和textarea。所以,我想学习其他类型。我在谷歌上也搜索了它。但我不能。例如,我想学习电子邮件类型。array( \'name\' => \'Instagram\', \'desc\' => \'You should write Instagram link here\', \'id\' => $prefix . \'text-instagram\',