Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
182 / 182 / 83
Регистрация: 18.02.2014
Сообщений: 867

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

23.04.2014, 15:38. Показов 2861. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые программисты,
возникла такая проблема.
Хочу сделать сайт используя Ajax, что бы переход по сыллка не перезагрежал страницу целиком. Ajax имеет направления на различные файлы которые лежат в теме Wordpress. Беда в том что когда он переходит на эти файлы у меня пропадают стандартные Wordpress функции. К примеру спазу выдаёт ошибку о неизвестрой функции add_action() и все другие родные функции Worpdress.
Файлы созданные мною я делал как шаблон так и без шаблона. К примеру:
PHP
1
<?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 и одна из функций:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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);
            }
        });
}
Данная функция получает данные которые передаются на данные момент из index.php, тут нету проблем у меня точно. Функция вызова функции из js.js:
PHP
1
<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 сожержит следующие:
PHP
1
2
3
4
5
6
$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 я используюнеправильно в данной ситуации.

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

Добавлено через 1 час 47 минут
Пока пошел таким путём
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.04.2014, 15:38
Ответы с готовыми решениями:

Сделать ajax запрос к 2 файлам одновременно?
а можно делать аякс запрос к 2файлам одновременно ? у меня структура такая - в одном файле функции в другом верстка и запросы к...

Альтернатива javascript файлам для ajax удаления
В общем нашел несколько статей для ajax удаления, они просят чтобы были установлены файлы &lt;script...

Правильное написание своих Ajax-запросов в Joomla 2.5
Приветствую всех. Не первый день работаю с джумлой и не могу научится правльно писать свои Ajax запросы У меня в шаблоне джумлы есть...

3
182 / 182 / 83
Регистрация: 18.02.2014
Сообщений: 867
25.04.2014, 15:04  [ТС]
Пока пошел таким путём
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );
0
Coding is art
Эксперт JS
540 / 423 / 154
Регистрация: 04.09.2013
Сообщений: 1,066
27.04.2014, 01:41
Лучший ответ Сообщение было отмечено xpoince как решение

Решение

Цитата Сообщение от xpoince Посмотреть сообщение
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>
С сразу не правильно..
Добавляем в function.php экшен 'wp_enqueue_scripts' ( ищи в гугле ) и там подключаем файлы ( что бы не было овверрайдов файлов ).

По поводу того как использовать ajax с WP в сети много текстов ( видимо гуглить мы не любим ).
и так, по порядку..
1) создаём экшен в котором указываем что мы хотим делать при обращении к ajax из js, выглядит это так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
add_action( 'wp_ajax_{название_экшена}', 'some_callback_func' ); // для вошедших в админку пользователей
add_action( 'wp_ajax_nopriv_{название_экшена}', 'some_callback_func' ); // Для не вошедших в админку посетителей
function some_callback_func {
 
if( ! isset( $_POST['my_vars'] )
    wp_send_json(array( 'return' => 'ne peredalas peremennaja' ) );
$my_vars = $_POST['my_vars'];
global $Shop; // что бы не генерировать новый экземпляр класса запиши его в глобальный массив или сделай $Shop = Shop::get_instance(); - которая вернёт класс - см php мануалы
$Shop->add_cart($my_vars['id_item1'],$my_vars['count1'],$my_vars['price1'],$Shop->get_id() );
// тут бы проверку добавилось или нет..
wp_send_json(array( 'return' => 'success' ) );
}
После того как пхп код готов нужно его вызывать..
для этого будем пользоваться wp_localize_script(); ( в wp_enqueue_scripts ) что бы передать переменные в наш js файл.
выглядит это так:
PHP
1
2
3
4
5
add_action('wp_enqueue_scripts', 'my_enqueue_scripts' );
function my_enqueue_scripts() {
wp_enqueue_script( 'my_script_handle', get_template_directory_uri . '/js/my_js_file.js', array( 'jquery' ) ); // array( 'jquery' ) говорит, что нужно загрузить jquery перед этим файлом
wp_localize_script( 'my_script_handle', '{переменная_для_скрипта}', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ); // передаём ссыль на ajax файл ( в админке она загружается автоматически, а вне админки нужно подгружать
}
После того как добавили скрипты на сайт сделаем сам js файл:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(function($){
 
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: {переменная_для_скрипта}.ajax_url,
         dataType: 'json',
         data: {
action: '{название_экшена}',
my_vars: { id_item1:id_item,  count1:count, price1:price },},
            success: function(data) {
            $('#add_cart').html(data.return); // если передаются какие-то ещё key в массиве ( в php ) то их значение доступно через data.{key}
            }
        });
}
 
})(jQuery) // В "safe mode" запускаем
Вот. Так делают обычные люди в WP ajax. Тогда и все файлы доступны и ничего не нужно подключать лишнего.

Добавлено через 6 минут
Цитата Сообщение от muxahuk1214 Посмотреть сообщение
get_template_directory_uri
должно быть get_template_directory_uri() - возвращает url к родительской теме ( или выбранной ).
3
182 / 182 / 83
Регистрация: 18.02.2014
Сообщений: 867
27.04.2014, 11:30  [ТС]
Цитата Сообщение от muxahuk1214 Посмотреть сообщение
По поводу того как использовать ajax с WP в сети много текстов ( видимо гуглить мы не любим ).
Чуть Чуть не понимал из написанного в документации ) Вот ваш пример всё поставил на место. Спасибо за ответ. Всё работает как надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.04.2014, 11:30
Помогаю со студенческими работами здесь

Ajax загрузка формы из загруженного через ajax блока
Вообщем, через ajax в блок подгружается форма, из нее нужно загрузить в этот же блок др.контент. $('#form').submit(function(e){ ...

Через ajax в url:'ajax.php', нужно передать одну переменную, и значение radio кнопки
Как значение radio передать я разобрался, а вот как еще переменную со страницы кинуть в url: ajax.php Всем спасибо

Используя идею обращения числовой матрицы написать программу для обращения булевой матрицы
Задание. Используя идею обращения числовой матрицы написать программу для обращения булевой матрицы Имеется абсолютное непонимание...

Доступ к файлам ПК со смартфона через интернет
Здравствуйте! Подскажите, пожалуйста, как организовать доступ к файлам компьютера со смартфона через интернет? Не через локальную сеть, а...

Удалённый доступ к файлам через интернет
Захотелось мне попрактиковаться в создании удалённого доступа через интернет. Удалёнку по локалке я уже делал, но не знаю как настроить её...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru