Intereting Posts
Добавление статического изображения в шаблон контента для одного продукта WooCommerce Как ссылаться на страницу с коротким кодом? Плагин мультимедиа-плейлиста Форма представления сообщения переднего конца с полями повторяющегося типа Как передать настройки в comment_form (), если в теме используется только comment_template ()? Как разрешить пользователям писать собственные типы сообщений JetPack? Что именно ищет параметр «s» в запросах WP? Как получить имя плагина из местоположения файла плагина как изменить некоторые правила в базе данных Как реализовать CSS-определенные изображения с сайта начальной загрузки в WordPress-теме не сохранять сообщение в таблице базы данных WordPress wp_post Как переписать URL-адрес Добавление мета-поля настраиваемого типа сообщения в rss Страница с несколькими редактируемыми текстовыми контентом пользователя Довольно URL для пользовательской разбивки на страницы

Добавить мета-бокс, не отображающийся в новой записи – пользовательский мета-ящик не отображается

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

Что нужно сделать, чтобы убедиться, что это будет отображаться при нажатии «Добавить новую почту»?

<?php /* Plugin Name: TestPlug Description: Blank Author: No One Version: 1.0 */ function call_someClass() { return new someClass(); } if ( is_admin() ) add_action( 'load-post.php', 'call_someClass' ); class someClass { public function __construct() { add_action( 'add_meta_boxes', array( &$this, 'add_some_meta_box' ) ); } public function add_some_meta_box() { add_meta_box( 'some_meta_box_name' ,'Some Meta Box Headline' ,array( &$this, 'render_meta_box_content' ) ,'post' ,'advanced' ,'high' ); } public function render_meta_box_content() { echo '<h1>TEST OUTPUT - this gets rendered inside the meta box.</h1>'; } } ?> 

Я бы создал экземпляр класса на init или даже admin_init, а не на 'load-post.php'.

Присоединение к load-post.php не добавит ящиков в новые сообщения и только сообщения, которые уже сохранены. Правильный крючок для добавления мета-ящиков к ТОЛЬКО новым сообщениям – «load-post-new.php».

Если вы хотите, чтобы мета-окно отображалось как на новых сообщениях, так и на существующих сообщениях, используйте крюк add_meta_boxes.

замещать

 if ( is_admin() ) add_action( 'load-post.php', 'call_someClass' ); 

С

 if ( is_admin() ) { add_action( 'load-post.php', 'call_someClass' ); add_action( 'load-post-new.php', 'call_someClass' ); } 

Изменить: я ошибся, admin_menu – это не то, что вам нужно. Однако после исследования я придумал то, что работает для меня:

 add_action( 'admin_init', 'add_some_meta_box', 1 ); function add_some_meta_box() { add_meta_box( 'some_meta_box_name' ,'Some Meta Box Headline' ,'render_meta_box_content' ,'post' ,'normal' ,'high' ); } function render_meta_box_content() { echo '<h1>TEST OUTPUT - this gets rendered inside the meta box.</h1>'; } 

Кажется, что вывести его из класса заставляет его работать, не уверен, почему, хотя это может быть ошибка?

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