Intereting Posts
Зарегистрированная область боковой панели не показана из плагина. Запуск WP Cron в определенное местное время Как удалить фильтр Unattached в списке медиатеки? Найдите термины в пользовательской таксономии, основанной на лифтиархате Ошибка преобразования массива в строку при попытке многомерного массива POST Плагин «Мета-бокс»: реализация мета-полей в пользовательском типе сообщений Как импортировать 55 000 изображений (загруженных через FTP) в WordPress Media libary? Как переименовать имя и slug по умолчанию с помощью WP CLI? WP_Widget Устарела Пользовательские роли пользователя не применяются. Поле поиска сообщений CMB2 отображает / повторяет начальную запись, если оставить пустым Многопоточная / форматированная проблема с MySQL-запросом Принудительно показывать предыдущие / следующие ссылки Как активировать или установить виджет галереи? Показать все сообщения из всех категорий с разбиением на страницы

Нечетный PHP-код для отображения HTML мета-бокса

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

Пример из одного учебника WordPress :

 /* Display the post meta box. */ function callback( $post ) { ?> <?php wp_nonce_field( basename( __FILE__ ), 'smashing_post_class_nonce' ); ?> <p> <label for="smashing-post-class"><?php _e( "Add a custom CSS class, which will be applied to WordPress' post class.", 'example' ); ?></label> <br /> <input class="widefat" type="text" name="smashing-post-class" id="smashing-post-class" value="<?php echo esc_attr( get_post_meta( $post->ID, 'smashing_post_class', true ) ); ?>" size="30" /> </p> <?php } 

Что случилось ?> (В строке 2) и <?php} (в последней строке)? Я не понимаю.

Могу ли я просто откликнуться на HTML вместо этого? Как WordPress отображает HTML, если он просто напечатан в рамках функции?

Иногда при работе с более крупным блоком HTML проще просто закрыть ваши теги PHP и набирать HTML напрямую, а не пытаться echo HTML-код в PHP. Да, вы также сможете echo свой HTML-код.

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

Однако вам все равно нужно отображать HTML-код мета-окна. Вот в чем заключается функция smashing_post_class_meta_box () (параметр $ callback сверху).

Затем отображается приведенный вами пример кода и объясняется далее:

То, что делает вышеприведенная функция, отображает вывод HTML для вашего мета-поля. Он отображает скрытый ввод без ввода. Затем он отображает элемент ввода для добавления пользовательского класса post, а также вывод пользовательского класса, если он был введен.

Хорошо, это здорово, но чтобы понять, почему мы можем писать HTML таким образом в нашей функции, нам нужно вернуться к предыдущему шагу в учебнике, где мы фактически добавляем мета-окно:

 /* Create one or more meta boxes to be displayed on the post editor screen. */ function smashing_add_post_meta_boxes() { add_meta_box( 'smashing-post-class', // Unique ID esc_html__( 'Post Class', 'example' ), // Title 'smashing_post_class_meta_box', // Callback function 'post', // Admin page (or post type) 'side', // Context 'default' // Priority ); } 

Вы можете видеть, что при добавлении мета-поля у нас есть функция обратного вызова из вашего вопроса с именем smashing_post_class_meta_box . Это связано только с тем, что функция smashing_post_class_meta_box подключена к этому конкретному мета-окну, где здесь анализируется HTML. Если вы просто запускали функцию smashing_post_class_meta_box случайным образом, она вообще не отображалась бы, поскольку она, вероятно, будет работать до начала WordPress.