Intereting Posts
Как исправить проблему с отображением изображения в заголовке заголовка IE9 / WordPress? Где на PHP я перемещаю название и мета (дата) в нижней части каждого раздела блога? Добавить столбец имен файлов в медиа-библиотеку Изменение сообщений об ошибках входа в систему Мультисайтовый виджет / контент Как отображать контент только для разрешенного IP-адреса Каковы особенности развития WordPress, которые мне нужно знать? Есть ли список всех функций отображения для шаблонов? Пользовательский WP TItle из настраиваемого шаблона с динамической структурой URL Изменить шаблон «на лету» на основе выбора родительского поста $ wp_query-> queried_object-> Предупреждение о выдаче идентификатора: неопределенное свойство Сделайте пункты подменю главной ссылкой в ​​меню администратора, используя fuctions.php Лучший способ программной ссылки на несколько категорий (объединение / пересечение) Как добавить миниатюру сообщения динамически с помощью JQuery? Дамп пользовательских почтовых баз данных

Если установлен флажок Meta Checkbox, сделайте что-нибудь?

Я создал пользовательский флажок, который, когда я проверяю, хочу, чтобы он отображал немного другое содержимое (особенно специальный стиль css). По какой-то причине он работает неправильно.

В моих функциях:

add_action( 'add_meta_boxes', 'add_special_checkbox' ); function add_special_checkbox() { add_meta_box( 'special-checkbox', 'Special Box', 'special_checkbox_func', 'post', 'side', 'high' ); } function special_checkbox_func( $post ) { $values = get_post_custom( $post->ID ); $check = isset( $values['special_box_check'] ) ? esc_attr( $values['special_box_check'][0] ) : ''; wp_nonce_field( 'my_special_box_nonce', 'special_box_nonce' ); ?> <p> <input type="checkbox" name="special_box_check" id="special_box_check" <?php checked( $check, 'on' ); ?> /> <label for="special_box_check">Is this post 'special?'</label> </p> <?php } add_action( 'save_post', 'special_checkbox_save' ); function special_checkbox_save( $post_id ) { // Bail if we're doing an auto save if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; // if our nonce isn't there, or we can't verify it, bail if( !isset( $_POST['special_box_nonce'] ) || !wp_verify_nonce( $_POST['special_box_nonce'], 'my_special_box_nonce' ) ) return; // if our current user can't edit this post, bail if( !current_user_can( 'edit_post' ) ) return; // now we can actually save the data $allowed = array( 'a' => array( // on allow a tags 'href' => array() // and those anchords can only have href attribute ) ); // This is purely my personal preference for saving checkboxes $chk = ( isset( $_POST['special_box_check'] ) && $_POST['special_box_check'] ) ? 'on' : 'off'; update_post_meta( $post_id, 'special_box_check', $chk ); } ?> 

В моей петле:

 <?php if (get_post_meta($post->ID, 'special_box_check', true)) { ?> //add special styling <? } else { ?> //dont add special styling <?php } ?> 

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

Я уверен, что я делаю что-то неправильно здесь. Заранее спасибо.

Solutions Collecting From Web of "Если установлен флажок Meta Checkbox, сделайте что-нибудь?"

Вы устанавливаете значение, независимо от того, проверена она или нет:

 $chk = ( isset( $_POST['special_box_check'] ) && $_POST['special_box_check'] ) ? 'on' : 'off'; 

Значение будет либо on либо off , поэтому условие if всегда истинно, так как оно всегда имеет значение.

Вы можете изменить его, чтобы сохранить, только если он установлен, или удалить его, если это не так. Таким образом, ваше состояние будет работать, и у вас не будет дополнительных мета-записей, чтобы сохранить состояние выключено.

 if ( isset( $_POST['special_box_check'] ) && $_POST['special_box_check'] ) { add_post_meta( $post_id, 'special_box_check', 'on', true ); } else { delete_post_meta( $post_id, 'special_box_check' ); } 

Код совершенно в порядке ничего не удаляет, просто нужно иметь условное место

 // check against the custom field has a value if ( get_post_meta($post->ID, 'special_box_check', true) == 'on' ) ) { $class = 'highlight'; } else{ $class = 'normal'; } 

Поместите переменную $class в свою обертку div. Ваш стиль будет выглядеть следующим образом:

 .highlight{ color:#FF0000; } .normal{ color:#000; }