如何在wordpress插件的自定义元框中保存多个复选框值?

Posted

技术标签:

【中文标题】如何在wordpress插件的自定义元框中保存多个复选框值?【英文标题】:how to save multiple checkbox values in custom metabox in wordpress plugin? 【发布时间】:2019-01-23 04:21:24 【问题描述】:

是的,我知道还有另一个相关问题已得到解答,但我不明白如何在我的代码中实现该解决方案。我只是一个初学者,帮帮我。我想在 WordPress 插件的自定义元框中保存多个复选框值。当用户保存或更新帖子时,应保存选中复选框的值。

function cd_meta_box_cb($post)
global $post;
echo'<b> Select the contributors that have contributed to this post: </b>';
echo '<br><br>';   
wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
global $wpdb;
$authors = $wpdb->get_results("SELECT ID, user_nicename from $wpdb->users 
ORDER BY user_nicename");
$i=0;
$n=count($authors);
foreach($authors as $author) 
    echo"<input type='checkbox' id='my_meta_box_check' 
    name='my_meta_box_check'";
    echo"value=";
    the_author_meta('user_nicename', $author->ID);
    echo">";
    echo"<label for='author'.$i>";
    the_author_meta('user_nicename', $author->ID);
    echo"</label>";
    echo "<br />";
  

 echo"<input type='submit' id='submit_btn' name='submit' value='Submit'>";
  
//save custom data when our post is saved
 function save_custom_data($post_id) 
   
  global $post;
  $contributor=get_post_meta($post->ID,'my_meta_box_check',true);
  if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;     

 if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( 
 $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;

// if our current user can't edit this post, bail
if( !current_user_can( 'edit_post' ) ) return;
if ( isset($_POST['my_meta_box_check']) ) 
        

    $data=serialize($_POST['my_meta_box_check']);   
    update_post_meta($post_id, 'my_meta_box_check',$data);      
  
else 
    delete_post_meta($post_id, 'my_meta_box_check');
  

add_action( 'save_post', 'save_custom_data' );
function displaymeta()


    global $post;
    $m_meta_description = get_post_meta($post->ID, 'my_meta_box_check', 
  true);
    echo 'Meta box value: ' . unserialize($m_meta_description);


add_filter( 'the_content', 'displaymeta' );

?>

【问题讨论】:

嗨,komal,当您尝试保存元值时会发生什么...... 嗨 Yogesh,当我保存帖子时,它在帖子上只显示一个复选框值(由于过滤器)。即使我检查多个值,它也只显示一个。它也只将那个值存储在 wppost_meta 表中。如何在一个 meta_key 中存储多个元值? 【参考方案1】:

提及复选框字段名称为数组,如my_meta_box_check[]

请使用下面的代码

<input type='checkbox' id='my_meta_box_check' 
name='my_meta_box_check[]'" >

请试试这个,看看它是否适合你。

【讨论】:

好的,该解决方案将数据很好地存储在数据库中,但是当我尝试回显它时,它会显示“数组”。如何显示选中复选框的单个值? 好的,我使用了 foreach 循环,现在它工作得非常好!非常感谢Yogesh! :) 干杯! 您好,我在另一个代码中有另一个查询,您能帮帮我吗? @Yogesh? 嗨@KomalR,当然。我会帮你的 非常感谢!请查看此链接***.com/questions/51927113/…

以上是关于如何在wordpress插件的自定义元框中保存多个复选框值?的主要内容,如果未能解决你的问题,请参考以下文章

wordpress 元框中的多个复选框

如何在选中的自定义元框中设置单选按钮?

wordpress metabox中的多个复选框

Wordpress - 特色图像元框未显示在自定义帖子类型上

在特色图片元框中添加或更改内容-Wordpress

从购物车表单复选框返回字符串(是/否)到 wordpress 元框