Intereting Posts
Проблема создания пользовательской функции санитизации для раскрывающегося списка пользователей Загрузка скриптов на конкретные страницы Комментарий после уведомления? Я не могу форматировать текст на странице редактирования (или сообщения), что не так ..? Только текущие изображения галереи с get_attached_media WordPress: update_option, не обновлять пустые опции? Как расширить разделы и настройки родительских тем в Дереве опций Можно ли переименовать папку wp-admin? добавьте поле ввода файла в настраиваемый тип сообщения и как его использовать в шаблоне cutom Неправильное восстановление базы данных, проблема с кодировкой Как выводить заголовок домашней страницы блогов Как хранить данные для сообщений / страниц, построенных с помощью drag-n-drop builder? Плагин jQuery не загружается JQuery При нажатии кнопки удаляется короткий код Удвоенные названия при использовании All in One SEO с пользовательским шаблоном

Как определить, какой файл / функция будет использоваться для ответа на определенный URL?

Я Drupalista, который изредка работает в WordPress, поэтому это может быть очевидно 🙂 Я помогал коллеге отлаживать поведение AJAX, и, получив URL-адрес обратного вызова от Firebug, я не был уверен, как перевести это в файл и функционируют на стороне сервера. Может кто-нибудь просветить ?! ТИА

Solutions Collecting From Web of "Как определить, какой файл / функция будет использоваться для ответа на определенный URL?"

WP не совсем работает. Как работает WP, это длительная и дискуссионная дискуссия, но вот короткая версия.

(BTW, AJAX – это совсем другое дело. В WP есть целая система, просто для того, чтобы легко выполнять запросы AJAX, и большинство людей делают это неправильно. Если ваш вопрос специфичен для AJAX, ни одно из ниже не может применяться.)

Первое, что нужно понять, это переписать систему. WordPress использует класс WP_Rewrite, который по существу реализует правила перезаписи, аналогичные тому, как вы это делали в файле .htaccess. Он использует регулярные выражения для преобразования «хороших» URL-адресов в переменные запроса.

Например, http://example.com/author/otto будет преобразован в http://example.com/index.php?author_name=otto внутренне. Аналогично, http://example.com/2011/08/04 будет преобразован в http://example.com/index.php?year=2011&monthnum=08&day=04 .

Существует довольно большой набор этих правил (50+), которые генерируются для обработки этих случаев URL-адресов, и что эти правила на самом деле зависят от ваших настроек, каких пользовательских типов сообщений вы используете и т. Д. Кроме того, темы и плагины и такие также могут их регулировать.

Эти переменные запроса стандартизируются и называются в системе WP_Query, которая контролирует запросы, запрашиваемые в базе данных. Так, что year / monthnum / day вещь читается и превращается в $ wp_query-> year и $ wp_query-> monthnum и так далее. Это работает на основе белой системы, поэтому переменные должны быть заранее определены либо базовым кодом, либо плагинами / темами, которые их корректируют.

Во всяком случае, основной WP_Query инициализируется и заполняется системой WP_Rewrite. Когда запрос выполняется, он определяет, что он вытаскивает из базы данных, исходя из того, какие переменные установлены. Он устанавливает кучу флагов, таких как is_author и is_archive, и is_home и is_single и аналогичные, чтобы обозначать различные типы вещей. В широком смысле они используются для определения иерархии шаблонов .

После этого вызывается загрузчик шаблонов, чтобы определить, какую часть темы отображать. Используя эти правила is_ * и ряд функций определения шаблона, выбирается один из файлов шаблонов темы, а затем вызывается для отображения страницы. Предполагается, что в шаблоне будет реализовано что-то, называемое The Loop , которое в основном вытягивает сообщения из основного $ wp_query global и отображает их правильно, в соответствии с тем, что оно хочет сделать это.

Таким образом, это не вопрос файлов и функций, это вопрос процедур, основанных на переменных входах. Все вызовы в WordPress в основном принимают одну и ту же последовательность событий:

  1. URL-адрес анализируется в переменных запроса.
  2. Основной запрос выполняется на основе этих переменных.
  3. Иерархия шаблонов определяет, какой файл темы использовать.
  4. Файл темы отображает страницу.

Как правило, если вы хотите изменить ситуацию на существующих страницах, вы либо изменяете нужный файл в теме (или создаете новую на основе иерархии тем), либо создаете новый «тип» вещи (например, пользовательский пост Type), который может автоматически настраивать как переменные запроса, так и переписывать правила соответствующим образом, или если вы делаете что-то совершенно обычное, то сами делаете и сами изменяете правила перезаписи.

Дело в том, что для того, чтобы изменить вещи самым простым способом, вы должны действительно перестать думать о подключении URL-адресов к функциям, но вместо этого начните думать о том, какие вещи я использую, и что я хочу, чтобы они действительно делали и как я хочу, чтобы они жили внутри системы? "

Более конкретные вопросы помогут вам получить более конкретные ответы. 🙂

Проблема в том, что многие люди делают ajax свой собственный путь, а не используют WordPress при условии ajax.

Если это правильный способ WordPress, js вызовет /wp-admin/admin-ajax.php через ajaxurl var и передаст action , которое будет отображаться в add_action('wp_ajax_{$action}', 'some_function'); где-то в some_function functions.php или плагине, который будет вызывать some_function при действии.