Я унаследовал плагин Wordpress, который позволяет создавать пользовательские поля при редактировании страниц и/или сообщений. Он добавляет немного другой контент для страниц, чем для сообщений. Плагин определяет страницу или сообщение со следующим:Определить, редактирую ли я страницу или сообщение в Wordpress
if(preg_match('|post.php|i', $_SERVER['SCRIPT_NAME']) || preg_match('|post-new.php|i', $_SERVER['SCRIPT_NAME'])) {
add_meta_box('qaws_' . $cg ,$group, 'qaws_admin_meta', 'post', 'advanced', 'core');
} elseif(preg_match('|page.php|i', $_SERVER['SCRIPT_NAME']) || preg_match('|page-new.php|i', $_SERVER['SCRIPT_NAME'])) {
add_meta_box('qaws_' . $cg ,$group, 'qaws_admin_meta', 'page', 'advanced', 'core');
}
Это работало отлично в старых версиях Wordpress, потому что они использовали Post.php в URL при редактировании сообщения и page.php при редактировании страниц. Теперь, однако, Wordpress этого не делает. Оба сообщения и страницы редактируются с URL-адресом, который выглядит так: post.php?post=4&action=edit
, поэтому единственным возможным идентификатором в URL-адресе является номер сообщения.
Итак, как бы я определил, редактирую ли я страницу или сообщение? Есть ли функция Wordpress, которая может легко сказать мне это? Единственный вариант, чтобы захватить номер сообщения и как-то проверить его, чтобы узнать, что это такое?
Как вы подходите к этому?
EDIT: Вот что я сделал ... , а не делать preg_match я восстановил глобальный $ идентификатор, используемый get_all_page_ids()
, чтобы получить список всех страниц и соответствовал $ идентификатор идентификаторы в массиве get_all. Если есть совпадение, сделайте страницу add_meta_box, если не выполните одно сообщение.
Я также переместил проверку из цикла, в котором был сохранен кучу вовремя, чтобы отобразить страницу. Теперь я устанавливаю флаг прямо в начале и в цикле, чтобы эти мета-боксы просто проверяли, установлен ли этот флаг.
Спасибо за ответ. Это хороший ответ! Единственная проблема с этим заключается в том, что я создаю новую страницу или сообщение, тогда у меня нет идентификатора страницы или сообщения для проверки. Тем не менее, я уже обрабатываю это с помощью: preg_match ('| post_type = page | i', $ _SERVER ['QUERY_STRING']), поэтому я могу использовать функцию, которую вы предлагаете, с этим предварительным совпадением и по-прежнему хорошо идти. Благодаря! – Lothar