Сохранение метаданных с несколькими флажками WordPress

#php #wordpress #custom-fields #custom-field-type

#php #wordpress #пользовательские поля #пользовательский тип поля

Вопрос:

Код работает!

У меня есть два пользовательских типа записей: Events и Artists . Я использую PHP-класс WPAlchemy MetaBox, пытаясь создать метабокс с серией динамически создаваемых флажков (т. Е. Для каждого Artists сообщения будет установлен флажок) в Events редакторе сообщений, который позволит мне выбирать, какие Artists будут отображаться в Event .

Любая помощь или понимание высоко ценятся! Спасибо!

Этот код отлично работает для отображения флажков (из checkbox_meta.php ):

 <div class="my_meta_control">

    <label>Group checkbox test #2</label><br/>

        <?php
        global $post;
        $artists = get_posts('post_type=artists');
        foreach($artists as $artist) :
        setup_postdata($artist);
        $slug = $artist->post_name;
        ?>

        <?php $mb->the_field('cb_ex2', WPALCHEMY_FIELD_HINT_CHECKBOX_MULTI); ?>

        <input type="checkbox" name="<?php $mb->the_name(); ?>" value="<?php echo $slug; ?>"<?php $mb->the_checkbox_state($slug); ?>/><?php echo $artist->post_title; ?><br/>

    <?php endforeach; ?>

    <input type="submit" class="button-primary" name="save" value="Save">

</div>
  

Этот код из functions.php:

 include_once 'assets/functions/MetaBox.php';
if (is_admin()) wp_enqueue_style('custom_meta_css', 'wp-content/themes/bam/assets/css/meta.css');

define('THEMEASSETS', STYLESHEETPATH . '/assets');

$custom_metabox = new WPAlchemy_MetaBox(array
(
    'id' => '_custom_meta',
    'title' => 'My Custom Meta',
    'types' => array('sp_events'),
    'template' => THEMEASSETS . '/functions/checkbox_meta.php'
));
  

Ответ №1:

Я разработал вспомогательный класс, который может помочь вам с созданием мета-полей WordPress.

Комментарии:

1. большое спасибо, димас! На самом деле я только что проверил ваш сайт несколько часов назад по рекомендации друга — выглядит очень многообещающе!

Ответ №2:

Я думаю, что проблема в этой строке

 $data = stripslashes_deep($_POST['artist']);
  

Попробуйте изменить его на

 $data = stripslashes_deep($_POST);