Intereting Posts
Как обновить статус сообщения для черновика, если роль пользователя «ожидает», Как включить PHP-файл в сценарий плагина Как подключить разные CPT вместе? Любой крюк называется, когда сообщение публикуется? Помощь с пользовательским переписанием Как получить ссылку на WordPress, чтобы полностью оценить, когда она поступает из facebook Запретить индексирование страницы 404 WP в Docker – невозможно установить плагин или обновить WP Как передавать значения электронной почты с одной php-страницы на другую Настроить кнопку «Переключатель панели инструментов» для выбора всегда? Включение более старой версии jQuery для IE7 / IE8 Получение заголовков уже отправил ошибку из плагина Как добавить объявления Google на свою домашнюю страницу? Показать все сообщения от единого таксономия Есть ли способ интегрировать WordPress в существующую систему PHP Framework, CMS и систему навигации?

Где передается ключ _wp_page_template?

При добавлении метаданных для почтовых ящиков я понимаю, что любой введенный вами атрибут атрибута будет передан через форму на сервер.

Следовательно, если у меня есть

 <input type="text" name="my_custom_field" id="my_custom_field" /> 

с помощью

 get_post_meta($post->ID, 'my_custom_field', true); 

Я могу получить значение этого input .

В связи с этим я сделал несколько поисковых запросов о том, как настроить таргетинг на пользовательские шаблоны страниц, и это было то, что я нашел.

 global $post; function func_name { if ( 'foobar.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) { do something... } } add_action( 'add_meta_boxes_page', 'func_name' ); 

Откуда появляется _wp_page_template ?

Я проверил страницу редактирования бэкэнда WP в метатеге «Атрибуты страницы», но никаких полей на нем не было. Что меня поражает, так это то, как _wp_page_template также появляется в таблице wp_postmeta базы данных.

Может ли кто-нибудь помочь мне объяснить это?

Заранее спасибо.

Имя атрибута HTML – это то, что отправлено на сервер. Существует некоторый PHP-код, читающий его и сохраняющий его с определенным ключом в базе данных.

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

Обработчик атрибутов шаблонов делает это: он берет имя page_template из атрибутов страницы metabox и сохраняет его как _wp_page_template в базе данных. Лидерский знак подчеркивания защищает это поле от отображения в пользовательских областях метабокс.

См. Эту часть в wp_insert_post() :

 if ( !empty($page_template) && 'page' == $data['post_type'] ) { $post->page_template = $page_template; $page_templates = wp_get_theme()->get_page_templates(); if ( 'default' != $page_template && ! isset( $page_templates[ $page_template ] ) ) { if ( $wp_error ) return new WP_Error('invalid_page_template', __('The page template is invalid.')); else return 0; } update_post_meta($post_ID, '_wp_page_template', $page_template); } 

Сохранение данных из формы не является автоматическим, как вы, кажется, думаете …

При добавлении метаданных для почтовых ящиков я понимаю, что любой введенный вами атрибут атрибута будет передан через форму на сервер. Следовательно, если <input type="text" name="my_custom_field" id="my_custom_field" /> , используя get_post_meta($post->ID, 'my_custom_field', true); для получения значения этого входа возможно.

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

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

Конкретная часть данных, о которой вы говорите, обрабатывается функцией wp_insert_post в wp-includes/post.php .