Доп инфо на определенной записи

👍 Научим создавать сайты на WordPress бесплатно за 19 уроков. Подробнее →

Всем привет! Подскажите пожалуйста, как соорудить такую штуку: в редактировании записи поставить чек бокс, который бы отвечал показывать бы определенный div блок или нет.

Создай свой первый сайт на WordPress

tvenjoy
Оцените автора
Добавить комментарий

  1. tiaurus
    Ответить
  2. Apathetic

    Когда-то решал практически такую же задачу, поделюсь.
    Этот код в functions.php:

    add_action( 'add_meta_boxes', 'md_checkbox' );
    add_action('save_post', 'save_checkbox', 10, 2);
    function md_checkbox() {
        add_meta_box(
            'checkbox_id',
            'Управление видимостью блока',    // title of the box
            'checkbox_content',   // function to be called to display the checkboxes, see the function below
            'post',        // on which edit screen the box should appear
            'side',      // part of page where the box should appear
            'default'      // priority of the box
        );
    }
    
    function checkbox_content( $object, $box ) { 
    	$md_checkbox = get_post_meta($object->ID, 'md_checkbox', true);
    	?>
    	<p>
    		<input id="md_checkbox" type="checkbox" name="md_checkbox" value="1" <?php checked(1, $md_checkbox) ?> /> <label for="md_checkbox">Показывать блок?</label>
    	</p>
    <?php }
    
    function save_checkbox($post_id, $post){
         if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
            return $post_id;
        }
    	if(isset($_REQUEST['md_checkbox']))  {
            update_post_meta( $post_id, 'md_checkbox', $_REQUEST['md_checkbox'] );
    	}
    	else {
    		delete_post_meta( $post_id, 'md_checkbox' );
    	}
    }

    Этот код на вывод записи:

    $md_checkbox = get_post_meta(get_the_ID(), 'md_checkbox', true);
    if ( $md_checkbox == '1' ) {
    	// код, если чекбокс отмечен
    	} else {
    	// код, если чекбокс не отмечен
    }
    Ответить
  3. tvenjoy автор

    я так понял так? что то ошибка выходит

    <?php 
    $md_checkbox = get_post_meta(get_the_ID(), 'md_checkbox', true);
    if ( $md_checkbox == '1' ) {
        // код, если чекбокс отмечен
        } else {
        // код, если чекбокс не отмечен
    }
    ?>
    Ответить
  4. tvenjoy автор

    пришлось использовать шорткод :(

    Ответить
    1. Apathetic

      А вы код в текст записи что ли вставляли? О_о
      Это нужно было в single.php вставлять, например.

      Ответить
  5. tvenjoy автор

    нет уж конечно )))

    Ответить
    1. Apathetic

      Просто фраза «я так понял так? что то ошибка выходит» совершенно бессодержательна.

      Ответить
      1. tvenjoy автор

        Имелось ввиду этим ли годом выводить эту функцию в теме :)

        Ответить
  6. tiaurus

    Я вам в первом же комментарии привел ссылку на пост, в котором рассказывается, как выводить постовой с помощью чекбокса в редакторе постов — возьмите готовый код и измените под себя. Постовой выводится отдельным DIV’ом.

    Ответить
  7. tvenjoy автор

    Спасибо, разобрался.

    Ответить