时间:2015-06-13 12:36:31

标签: php jquery wordpress

我在wordpress工作。我显示了不同的子类别。现在点击它将在其下显示其产品的每个类别。

我的代码是这样的:

<?php
    $query3 = "select t.* from wp_terms as t 
               join wp_term_taxonomy as tt on tt.term_id = t.term_id
               where tt.parent = ".$res2->term_id;
    $result3 = $wpdb->get_results($query3);

    foreach($result3 as $res3)
    {
?>
        <li>
            <a href="##" class="sub_cat_name" data-id = "<?php echo $res3->term_id; ?>"><strong><?php echo $res3->name; ?></strong></a>
                <ul class="tmp">
                     <li class="tmp_li">
                     </li>
                </ul>
        </li>
<?php
     }
?>

我的jquery代码是:

<script>
$(document).ready(function(){
    $(".sub_cat_name").click(function(){
        var cat_id = $(this).data("id");
        //alert(cat_id);
        $.ajax({
            url : "<?php echo site_url()."/category-products/?cat_id=" ?>" + cat_id,
        }).done(function(data){
            $(".tmp_li").html(data);
            });
        });
    });
</script>

我的ajax页面是:

<?php
/** 
    Template Name: Get Category Products
*/
$cat_id = $_GET['cat_id'];
//echo $cat_id;

$query = "select p.* from wp_terms as t 
        join wp_term_taxonomy as tt on tt.term_id = t.term_id
        join wp_term_relationships as tr on tr.term_taxonomy_id = tt.term_taxonomy_id
        join wp_posts as p on p.ID = tr.object_id
        where t.term_id = ".$cat_id;
$result = $wpdb->get_results($query);
//print_r($result);
foreach($result as $res)    
{
?>
    <div class="pro_name">
        <?php echo $res->post_title; ?>
    </div>
<?php
  }
?>

我的产品属于子类别。但问题是,当我点击链接然后它的产品显示在所有子类别中。而不是它我想要只显示其自己的类别下的产品。

例如

有两个子类别:

1)Apple

2)芒果

当我点击Apple时,它的产品显示在苹果下面而不是芒果中。 在这里,我在苹果以及芒果下获得了苹果产品。那么我应该编写什么代码来解决这个问题呢?

2 个答案:

答案 0 :(得分:0)

试试这个....你必须找到附加数据的关系元素..否则它将附加到具有该类的每个元素......如果不工作,则需要进行微小的更改..

<script>
$(document).ready(function(){
    $(".sub_cat_name").click(function(){

    var subCategoru = $(this);
    vat tmp_li = subCategoru.siblings('tmp').find('tmp_li');


    var cat_id = $(this).data("id");
    //alert(cat_id);
    $.ajax({
        url : "<?php echo site_url()."/category-products/?cat_id=" ?>" + cat_id,
    }).done(function(data){
              tmp_li.html(data);
        });
    });
});
</script>

答案 1 :(得分:0)

我已经改变了我的代码而且它正在运行。我的新代码是这样的。

<?php

                                            $query3 = "select t.* from wp_terms as t 
                                                        join wp_term_taxonomy as tt on tt.term_id = t.term_id
                                                        where tt.parent = ".$res2->term_id;
                                            $result3 = $wpdb->get_results($query3);


                                            foreach($result3 as $res3)
                                            {
                                        ?>
                                                <li>
                                                    <a href="##" class="sub_cat_name_<?php echo $res3->term_id; ?>" data-id = "<?php echo $res3->term_id; ?>"><strong><?php echo $res3->name; ?></strong></a>
                                                    <ul class="tmp_<?php echo $res3->term_id; ?>">
                                                        <li class="tmp_li_<?php echo $res3->term_id; ?>">
                                                        </li>
                                                    </ul>
                                                </li>


                                        <script>
                                            $(document).ready(function(){
                                                $(".sub_cat_name_<?php echo $res3->term_id; ?>").click(function(){

                                                    //var subCategoru = $(this);
                                                    //alert(subCategoru);
                                                    //var tmp_li = subCategoru.siblings('tmp').find('tmp_li');
                                                    //alert(tmp_li);

                                                    var cat_id = $(this).data("id");
                                                    //alert(cat_id);
                                                    $.ajax({
                                                        url : "<?php echo site_url()."/category-products/?cat_id=" ?>" + cat_id,
                                                    }).done(function(data){
                                                        //tmp_li.html(data);
                                                        $(".tmp_li_<?php echo $res3->term_id; ?>").html(data);
                                                        });
                                                    });
                                                });
                                        </script>

                                        <?php
                                            }
                                        ?></ul>