1

我正在使用自定义帖子类型永久链接插件为我的永久链接设置自定义结构,仅使用 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 后:

404 未找到文件:http ://localehost.com/enc/products/stuff/stuff/wp-admin/admin-ajax.php?action=createAyatSelectCPT&id=132

然后,问题来自位置admin-ajax.php。此文件在此位置不存在。所以新的永久链接结构要求我在我的 jquery 脚本文件中修改 admin-ajax.php 的路径。

4

1 回答 1

1

你怎么知道是什么函数弄乱了 div?

您的 jquery/ajax 代码是否更改了 div 等?如果有,能否提供相应的代码片段给我们?

此外,当您使用“/%postname%/%product_category%/”自定义永久链接或任何其他自定义永久链接时,是否会发生这种情况。

尝试使用 Firebug 插件,并为我们提供更多信息,以便我们可以快速有效地帮助您解决此问题。屏幕截图也会有所帮助。

下载 Firebug: http: //getfirebug.com/

于 2013-04-22T18:29:18.703 回答