Путь к файлу для скрипта AJAX (в WordPress)

Я использую этот сценарий jquery-ajax для отправки электронной почты:

$.ajax({ url: process.php, type: "POST", data: data, cache: false, ... 

в url Я вызываю php-файл, который отправляет письмо, но ajax получает его, только если я укажу полный путь:

 url: "http://www.domain.com/wp-content/themes/site_theme/templates/process.php", 

но я должен использовать синтаксис следующим образом:

 url: "../../templates/process.php", 

или использование переменной для объявления в html header / footer

Html

 <script type="text/javascript"> var urlMail = '<?php bloginfo('template_url'); ?>/templates/process.php'; </script> 

скрипт

 url: "../../templates/process.php", 

но в обоих случаях браузер браузера извлекает эту ошибку:

 POST http://www.domain.com/templates/process.php 404 Not Found 1.56s 

Где я ошибаюсь?

Это не способ реализовать ajax в wordpress. Все запросы ajax должны быть сделаны admin-ajax.php .

В файле шаблона:

 <script type="text/javascript"> var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; </script> 

В вашем js:

 $.ajax({ url: ajaxurl, type: "POST", cache: false, data: data + '&action=sendmail' //action defines which function to use in add_action }); 

в ваших functions.php:

 function send_my_mail(){ #do your stuff } add_action('wp_ajax_sendmail', 'send_my_mail'); add_action('wp_ajax_nopriv_sendmail', 'send_my_mail'); 

Читайте об Ajax in Plugins .

Я бы рекомендовал вам использовать систему типа Registry для сохранения всех «глобальных» значений в одном месте.

Схема оформления реестра

Есть мой небольшой плагин jQuery, если это может быть интересно для вас. Репутация GitHub

 <script type="text/javascript"> $.Registry.set('urlMail', '<?php get_bloginfo('template_url'); ?>/templates/process.php'; </script> 

И чтобы получить значение из реестра, вы должны использовать $ .Registry.get ('urlMail');

Я решил использовать код, предоставленный RRikesh, но заменив

 data: data 

с

 data: data + '&action=sendmail'