Intereting Posts
Как сделать плагин обязательным в теме wp без использования условных операторов php при вызове отдельной функции из этого плагина? Редактирование заголовков Заголовки каждой детали в woocommerce Order Email Разрешить сканеру Google сканировать определенные страницы авторов Тематический независимый плагин с использованием шаблона по умолчанию Сайт WordPress в загрузочном сайте подкаталога в главном каталоге Как показать контент из плагина с использованием шаблона, на котором в данный момент работает сайт? Получайте дочерние страницы текущей страницы в js-файл Самый простой способ создать два частных раздела, каждый из которых имеет общую учетную запись WP & WooCommerce – Постоянная ссылка Проблемы Galore Альтернативный почтовый пароль? Фильтровать таксономию Как получить имя файла прикрепленного файла, а не вложения Разработка темы: лицензионная помощь Какой бы крючок я должен использовать, это будет срабатывать, когда я открою сообщение для редактирования в WP back-end? Вставьте пользовательский контент перед заголовком виджета / после тега открытия виджета

Множественные флажки Metabox

Моя цель такова:

Я добавил дополнительный обмен на мою страницу. Внутри этого метаболизма есть несколько флажков. Каждый флажок связан с именем человека. Идея состоит в том, что если человек помечен в сообщении, я поставлю флажок, связанный с их именем. Для каждого отмеченного поля изображение каждого человека появится в предварительно определенном div в файле single.php. Когда все флажки отмечены, изображения все еще содержатся в этом div, но становятся тоньше с помощью css flexbox.

Metabox

Моя проблема заключается в следующем:

В настоящее время флажки ничего не делают. Даже если я их проверю, а затем обновить сообщение, они не будут проверяться. Это, очевидно, проблема с моим кодом. Мне также нужен способ установить изображение для каждого человека. Очень похоже на то, как вы установили изображение с изображением для сообщения, но для каждого человека в этом списке флажков. Затем мне нужно каждый флажок, чтобы вызвать эхо HTML. Этот HTML будет одинаковым для каждого человека, но будет содержать разные изображения, зависящие от отмеченных ящиков.

Наступает момент, чтобы перевести дыхание …

Мне очень жаль этого длинного объяснения, но это разрушало мой мозг всю неделю …

Мой код для метаболизма выглядит следующим образом. Он был скопирован из шаблона, что кто-то был достаточно любезен для публикации. Я не совсем понимаю все это, но иногда мне кажется, что легче узнать, если мне дадут решение, затем вернитесь и выясните, как все это работает.

// Featured People Meta add_action( 'add_meta_boxes', 'add_custom_box' ); function add_custom_box( $post ) { add_meta_box( 'Meta Box', // ID, should be a string. 'Featured People', // Meta Box Title. 'people_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 people_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, 'people-meta-box', true); ?> <input type="checkbox" name="people-meta-box[]" value="Bob" <?php if(isset($_POST['people-meta-box']['bob'])) echo 'checked="checked"'; ?> /> Bob <br> <input type="checkbox" name="people-meta-box[]" value="Bill" <?php if(isset($_POST['people-meta-box']['bill'])) echo 'checked="checked"'; ?> /> Bill <br> <input type="checkbox" name="people-meta-box[]" value="Steve" <?php if(isset($_POST['people-meta-box']['steve'])) echo 'checked="checked"'; ?> /> Steve <br> // Save <?php } add_action( 'save_post', 'save_people_meta_box' ); function save_people_meta_box(){ global $post; // Get our form field if(isset( $_POST['people-meta-box'] )) : $custom = $_POST['people-meta-box']; // Update post meta foreach($ids as $id){ update_post_meta($id, 'people-meta-box', $custom[$id]); wp_set_object_terms( $id, $custom[$id], 'people' ); } endif; } 

Я ОЧЕНЬ новичок в WordPress и PHP в целом, поэтому на это можно было ответить раньше, но я мог бы упустить это, поскольку мое понимание этой темы, возможно, было недостаточным для применения решений, предоставляемых другим, для моей работы.

Solutions Collecting From Web of "Множественные флажки Metabox"

Я тоже ломал себе голову и, наконец, смог найти решение, которое работает. Это должно сработать для вас, я быстро тестировал. Я представлю его в трех частях:

ЧАСТЬ 1: ДОБАВЬТЕ ТАМОЖЕННУЮ МЕТА-КОРОБКУ

 add_action( 'add_meta_boxes', 'add_custom_box' ); function add_custom_box( $post ) { add_meta_box( 'Meta Box', // ID, should be a string. 'Featured People', // Meta Box Title. 'people_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. ); } 

ЧАСТЬ 2: ОПРЕДЕЛИТЕ ФУНКЦИЮ «CALLBACK» (высвечивает html для флажков)

  function people_meta_box($post) { wp_nonce_field( 'my_awesome_nonce', 'awesome_nonce' ); $checkboxMeta = get_post_meta( $post->ID ); ?> <input type="checkbox" name="bob" id="bob" value="yes" <?php if ( isset ( $checkboxMeta['bob'] ) ) checked( $checkboxMeta['bob'][0], 'yes' ); ?> />Bob<br /> <input type="checkbox" name="bill" id="bill" value="yes" <?php if ( isset ( $checkboxMeta['bill'] ) ) checked( $checkboxMeta['bill'][0], 'yes' ); ?> />Bill<br /> <input type="checkbox" name="steve" id="steve" value="yes" <?php if ( isset ( $checkboxMeta['steve'] ) ) checked( $checkboxMeta['steve'][0], 'yes' ); ?> />Steve<br /> <?php } 

ЧАСТЬ 3: СОХРАНЕНИЕ ЦЕННОСТЕЙ ПРОВЕРКИ

 add_action( 'save_post', 'save_people_checkboxes' ); function save_people_checkboxes( $post_id ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if ( ( isset ( $_POST['my_awesome_nonce'] ) ) && ( ! wp_verify_nonce( $_POST['my_awesome_nonce'], plugin_basename( __FILE__ ) ) ) ) return; if ( ( isset ( $_POST['post_type'] ) ) && ( 'page' == $_POST['post_type'] ) ) { if ( ! current_user_can( 'edit_page', $post_id ) ) { return; } } else { if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } } //saves bob's value if( isset( $_POST[ 'bob' ] ) ) { update_post_meta( $post_id, 'bob', 'yes' ); } else { update_post_meta( $post_id, 'bob', 'no' ); } //saves bill's value if( isset( $_POST[ 'bill' ] ) ) { update_post_meta( $post_id, 'bill', 'yes' ); } else { update_post_meta( $post_id, 'bill', 'no' ); } //saves steve's value if( isset( $_POST[ 'steve' ] ) ) { update_post_meta( $post_id, 'steve', 'yes' ); } else { update_post_meta( $post_id, 'steve', 'no' ); } }