如何在wordpress中的更新帖子元数据上保存多个复选框? [英] How to save multiple checkbox on update post meta in wordpress?

查看:21
本文介绍了如何在wordpress中的更新帖子元数据上保存多个复选框?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有多个复选框,我想保存复选框并在 update_post_meta 中更新它,以便下次用户编辑帖子时,他会知道哪些复选框已被选中.我不知道我哪里出错了.这是我的代码:

I'm having multiple check boxes and I want to save the check box and also update it in the update_post_meta so that next time when a user edit the post, he would know which check boxes are already checked. I don't know where am I getting wrong. Here is my code:

add_action( 'add_meta_boxes', 'add_custom_box' );

 function add_custom_box( $post ) {

    add_meta_box(
            'Meta Box', // ID, should be a string
            'Music', // Meta Box Title
            'music_meta_box', // Your call back function, this is where your form field will go
            'post', // The post type you want this to show up on, can be post, page, or custom post type
            'side', // The placement of your meta box, can be normal or side
            'core' // The priority in which this will be displayed
        );

}

function music_meta_box( $post ) {

    // Get post meta value using the key from our save function in the second paramater.
    $custom_meta = get_post_meta($post->ID, 'custom-meta-box', true);
?>

<input type="checkbox" name="custom-meta-box[]" value="huge" <?php if(isset($_POST['custom-meta-box']['huge'])) echo 'checked="checked"'; ?>  /> Huge <br>
<input type="checkbox" name="custom-meta-box[]" value="house" <?php if(isset($_POST['custom-meta-box']['house'])) echo 'checked="checked"'; ?>  /> House <br>
<input type="checkbox" name="custom-meta-box[]" value="techno" <?php if(isset($_POST['custom-meta-box']['techno'])) echo 'checked="checked"'; ?> /> Techno <br>

<?php   


}
 add_action( 'save_post', 'save_music_meta_box' );

function save_music_meta_box(){

    global $post;

    // Get our form field
    if(isset( $_POST['custom-meta-box'] )) :

        $custom = $_POST['custom-meta-box'];

         // Update post meta

         foreach($ids as $id){
          update_post_meta($id, '_custom-meta-box', $custom[$id]);
         wp_set_object_terms( $id,  $custom[$id], 'Music' );
         }

    endif;

}

请帮忙

推荐答案

试试这个逻辑:-

function music_meta_box( $post )
{
    // Get post meta value using the key from our save function in the second paramater.
    $custom_meta = get_post_meta($post->ID, '_custom-meta-box', true);

    ?>
        <input type="checkbox" name="custom-meta-box[]" value="huge" <?php echo (in_array('huge', $custom_meta)) ? 'checked="checked"' : ''; ?> />Huge
        <br>
        <input type="checkbox" name="custom-meta-box[]" value="house" <?php echo (in_array('house', $custom_meta)) ? 'checked="checked"' : ''; ?> />House
        <br>
        <input type="checkbox" name="custom-meta-box[]" value="techno" <?php echo (in_array('techno', $custom_meta)) ? 'checked="checked"' : ''; ?> />Techno<br>
    <?php 
}
add_action( 'save_post', 'save_music_meta_box' );
function save_music_meta_box()
{

    global $post;
    // Get our form field
    if(isset( $_POST['custom-meta-box'] ))
    {
        $custom = $_POST['custom-meta-box'];
        $old_meta = get_post_meta($post->ID, '_custom-meta-box', true);
        // Update post meta
        if(!empty($old_meta)){
            update_post_meta($post->ID, '_custom-meta-box', $custom);
        } else {
            add_post_meta($post->ID, '_custom-meta-box', $custom, true);
        }
    }
}

希望对你有帮助.

这篇关于如何在wordpress中的更新帖子元数据上保存多个复选框?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆