Правильное обращения к файлам через Ajax

X
На сайте с 23.04.2014
Offline
0
1046

Здравствуйте уважаемые программисты,

возникла такая проблема.

Хочу сделать сайт используя Ajax, что бы переход по сыллка не перезагрежал страницу целиком. Ajax имеет направления на различные файлы которые лежат в теме Wordpress. Беда в том что когда он переходит на эти файлы у меня пропадают стандартные Wordpress функции. К примеру спазу выдаёт ошибку о неизвестрой функции add_action() и все другие родные функции Worpdress.

Файлы созданные мною я делал как шаблон так и без шаблона. К примеру:

<?php/*Template Name: Add cart*/?>
- И создаю новую страницу с этим шаблоном. Все функции которые я написал сам в functions.php работают, но не работают функции Wordpress.

Я предполагаю что дело может быть с Ajax, так как после него теряются функции Wordpress.

Подскажите что я делаю не так или как правельно надо использовать свой Ajax в Wordpress.

Немного кода который я использую для Ajax:

header.php

Беру библеотеку Ajax

<script type="text/javascript" src="//code.jquery.com/jquery-2.1.0.min.js"></script>

Файл js.js содержит функции которые Ajax обрабатывает

<script type="text/javascript" src="wp-content/themes/fragrance/js.js"></script>

Далее файл js.js и одна из функций:

[JS]function add_cart(name)

{

var id_item = $("input[name=id_item"+name+"]").val() //item id

var count = $("input[name=count"+name+"]").val() // Count

var price = $("input[name=price"+name+"]").val() // price

$.ajax({

type: "POST",

url: "wp-content/themes/twentytwelve/Shop/add_cart.php",

data: {id_item: id_item,

count: count,

price:price

},

success: function(data) {

$('#add_cart').html(data);

}

});

}[/JS]

Данная функция получает данные которые передаются на данные момент из index.php, тут нету проблем у меня точно. Функция вызова функции из js.js:

<a href="#" id="<?=$row['id_item'];?>" onclick="add_cart(this.id)">

Далее я иду в url: "wp-content/themes/twentytwelve/Shop/add_cart.php",

где отлавливаю $_POST ( тут тоже всё нормально ), но именно начиная уже с этого файла я получаю ошибку:

Fatal error: Call to undefined function add_action()......

Файл add_cart.php - Я сделал как шаблон так и не шаблон, результат один и тот же.

Сам файл add_cart.php сожержит следующие:

$id_item1 	= $_POST['id_item'];

$count1 = $_POST['count'];
$price1 = $_POST['price'];
include "../functions.php";
$Shop = new Shop();
$Shop->add_cart($id_item1,$count1,$price1,$Shop->get_id());

Получается, когда он открывает functions.php он уже не видит родных функций Wordpress.

Предполагаю что Ajax я используюнеправильно в данной ситуации.

Буду рад любым советам.

Спасибо

forest25
На сайте с 12.09.2009
Offline
67
#1

http://www.smashingmagazine.com/2011/10/18/how-to-use-ajax-in-wordpress/ - тут старое, но по теме

http://wpajax.com/ - целая книга на эту тему

http://codex.wordpress.org/Function_Reference/WP_Ajax_Response - статья на Codex о том как делать ответы в ajax на WP

Возможно что-то из этого вам поможет. Советую искать информацию сразу на английском т.к. на русском материалы к сожалению скудные и не всегда актуальные.

VPS 512MB 20GB SSD KVM - 5$ (http://u.hmdw.me/digitalocean) | ИМХО о хостингах (http://u.hmdw.me/hosting)
siv1987
На сайте с 02.04.2009
Offline
427
#2

Проблема в

xpoince:
url: "wp-content/themes/twentytwelve/Shop/add_cart.php",

если вы обращаетесь напрямую к файлам шаблонам, там не могут быть обращения к функциям вп, потому что шаблон это вьюшка

X
На сайте с 23.04.2014
Offline
0
#3

Спасибо за ответ.

Пока пошел таким путём

require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );

Но в конце концов буду использовать встроеный ajax WordpRess

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий