Задать вопрос
@amatoriste

Как указать путь к картинкам шаблона страницы wordpress? Ajax подгрузка на wordpress?

Приветствую всех. Пришлось поюзать wordpress (не работал с ним). Задача - создать кастомную страницу, с ajax подгрузкой при изменении селекта на странице. Сразу извиняюсь за возможно простые вопросы, я пока не сильно врублюсь в философию вп) она меня отторгает)
Вопрос 1. Как сделать на этой странице, да и на сайте пути к картинкам в виде www.site.ru/images/img.jpg вместо .../upload/2017/09/img.jpg/ .
Вопрос 2. Как лучше реализовать ajax подгрузку на отдельном шаблоне страницы. Запрос будет отправлятся после изменения селекта.
  • Вопрос задан
  • 412 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Вопрос 1:
В админке WordPress -> Настройки -> Медиафайлы - снимите чекбокс "Помещать загруженные мной файлы в папки по месяцу и году". Далее Вам нужно сделать следующее:
  1. Изменить стандартную папку загрузок медиафайлов на /images/ - путем написания небольшой функции и использования ее как фильтра для хука 'upload_dir'
  2. Изменить все пути для всех вложений в MySQL на требуемый путь /images/
Вопрос 2:
Все стандартно. Если говорить кратко: в functions.php нужно зарегистрировать и подключить файл с js функцией, а также определить константы:
wp_register_script( 'ajax-api-script', get_template_directory_uri() . '/js/ajax.js', array() );  // путь до файла с JS функцией
        wp_enqueue_script( 'ajax-api-script' );
        wp_localize_script( 
            'front-ajax-api-script', 
            'ajax_api_object', 
            array( 
                'ajaxurl' => admin_url( 'admin-ajax.php' ),
                'ajax_nonce' => wp_create_nonce( $NONCE )
            )
        );


После этого написать php функцию, которая будет отдавать на фронт нужные данные согласно параметру, переданному из селекта. Функцию обязательно зарегистрировать для 2 случаев использования - private и no_private.

Написать JS функцию - обработчик селекта с вызовом функции php через ajax:
jQuery.ajax({
        type: "POST",
        dataType : "json",
        url: ajax_api_object.ajaxurl,
        data: {
            action: "НАЗВАНИЕ_PHP_ФУНКЦИИ",
            nonce: ajax_api_object.ajax_nonce,
            param: ТУТ_ПАРАМЕТР_ИЗ_СЕЛЕКТА,
        },
        beforeSend: function() {
           /* какие-то действия перед отправкой ajax запроса */
        },        
        success : function(result){           
           /* какие-то действия после получения ответа от бекенда */
        },
        error : function(result){
           /* какие-то действия если с ajax случилось страшное */
        },
        complete: function() {
           /* какие-то действия после всех операций отправки запроса и получения ответа от бекенда */
        }
    });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы