我正在使用自定义帖子类型永久链接插件为我的永久链接设置自定义结构,仅使用 Wordpress 管理区域中的设置/常规。
我使用的自定义永久链接结构是:
/%postname%/%product_category%/
此外,我的single-CPT.php
页面下还有一个触发一些 jquery/ajax 操作的选择标签。当我删除自定义永久链接结构时,它会自动激活默认的永久链接结构,一切都像一个魅力。但是在激活上述结构后,应该显示由 jquery/ajax 返回的结果的 DIV 以一种奇怪的方式嵌入了整个页面。
我的jQuery代码是:
$('select.select').change(function(e) {
e.preventDefault();
var value = $('select.select option:selected').val();
create_ayat_selectCPT(value); // AJAX function
})
非常感谢您的帮助,我正在挖掘 2 天以找到解决方案。
请注意,我在我的网站中使用自定义帖子类型。
编辑:
考虑到 Damon 的回答,永久链接结构会影响 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 后:
然后,问题来自位置admin-ajax.php
。此文件在此位置不存在。所以新的永久链接结构要求我在我的 jquery 脚本文件中修改 admin-ajax.php 的路径。