Путь к файлу для скрипта 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
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
Где я нахожусь неправильно?
3 answers
Это не тот способ реализации 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
.
Я бы рекомендовал вам использовать систему, подобную реестру, для сохранения всех "глобальных" значений в одном месте.
Есть мой небольшой плагин jQuery, если это может быть вам интересно. Представитель GitHub
<script type="text/javascript">
$.Registry.set('urlMail', '<?php get_bloginfo('template_url'); ?>/templates/process.php';
</script>
И чтобы получить значение из реестра, вы должны использовать $.Registry.get('urlmail');