Вопрос 1:
В админке WordPress -> Настройки -> Медиафайлы - снимите чекбокс "Помещать загруженные мной файлы в папки по месяцу и году". Далее Вам нужно сделать следующее:
- Изменить стандартную папку загрузок медиафайлов на /images/ - путем написания небольшой функции и использования ее как фильтра для хука 'upload_dir'
- Изменить все пути для всех вложений в 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() {
/* какие-то действия после всех операций отправки запроса и получения ответа от бекенда */
}
});