Я использую плагин для постоянных ссылок пользовательского типа сообщений, чтобы установить пользовательскую структуру для мои постоянные ссылки, использующие только настройки / общие в админке Wordpress.
Я использую настраиваемую структуру постоянных ссылок:
/%postname%/%product_category%/
Кроме того, у меня на странице single-CPT.php
есть тег select, который запускает некоторые действия jquery / ajax. Когда я удаляю настраиваемую структуру постоянных ссылок, которая автоматически активирует структуру постоянных ссылок по умолчанию, все работает как шарм. Но после активации вышеуказанной структуры DIV, который должен отображать результаты, возвращенные jquery / ajax, странным образом встраивает всю страницу.
Мой код jquery:
$('select.select').change(function(e) {
e.preventDefault();
var value = $('select.select option:selected').val();
create_ayat_selectCPT(value); // AJAX function
})
Большое спасибо за помощь, 2 дня копаюсь, чтобы найти решение.
Обратите внимание, что на своем веб-сайте я использую стандартные типы сообщений.
Изменить: принимая во внимание ответ Деймона, структура постоянной ссылки влияет на поведение функции jquery / ajax. Фактически, если я перейду на /%product_category%/%postname%/
, вызов Ajax будет выполнен, но безуспешно.
Результат: у меня действительно есть предупреждение с сообщением об ошибке.
Функция jquery / ajax:
function create_ayat_selectCPT(str)
{
$.ajax({
type: "GET",
url: "wp-admin/admin-ajax.php",
dataType: 'html',
data: ({ action: 'createAyatSelectCPT', id: str}),
success: function(data){
$('#second-select').html(data);
},
error: function(data)
{
alert("Your browser broke create ayat cpt select!");
return false;
}
}); //ajax
return false;
}
В functions.php:
function createAyatSelectCPT() {
$ca=$_GET['id'];
?>
<form method="post" action="">
<select class="select2" id="selectid">
<?php
$my_query = new WP_Query();
$args = array(
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'product_category',
'terms' => array($ca)
)
)
);
$my_query->query($args);
if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post();
?>
<option value="<?php the_ID();?>"><?php the_title(); ?></option>
<?php
endwhile;
endif;
wp_reset_query();
die();
?>
</select>
</form>
<?php
}
add_action('wp_ajax_createAyatSelectCPT', 'createAyatSelectCPT');
add_action('wp_ajax_nopriv_createAyatSelectCPT', 'createAyatSelectCPT');
Соответствующий HTML-тег, который необходимо изменить:
<div id="second-select">...</div>
Изменить 2 после установки Firebug:
404 Not Found File: http://localehost.com/enc/products/stuff/stuff/wp-admin/admin-ajax.php?action=createAyatSelectCPT&id=132
Тогда проблема исходит из местоположения admin-ajax.php
. этого файла нет в этом месте. Таким образом, новая структура постоянных ссылок требует, чтобы я изменил путь к admin-ajax.php в моем файле сценария jquery.