Intereting Posts
Отключить миниатюры сообщений в 20-ти тринадцати детской теме Запрос по категориям и настраиваемое поле – Shortcode Пользовательский метафайл поля пользователя Специальная проблема с пользовательским интерфейсом пользовательского навигационного меню Как создать сайт с двумя типами логинов, продавцов и покупателей? Заставить WordPress для загрузки определенного шаблона Слияние двух отдельных меню WP в один в режиме Mobile view Я создал дополнительное поле для всех доступных виджетов. Как показать его значение в интерфейсе? укажите условие meta_key / meta_value для prev_post_link и next_post_link Загружать скрипты на основе типа сообщения Сделать значение posts_per_page одинаковым на всех страницах Если инструкция else для проверки эскиза и является ли это мобильным устройством – упростить Почему моя таблица не создана? Компоненты, используемые в Темы и плагины: как получить URL-адрес файла? WordPress Dashboard организует сообщения по категориям

Как определить, какой файл / функция будет использоваться для ответа на определенный 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 при действии.