web-dev-qa-db-ja.com

子タクソノミー用語IDから投稿を照会する

これは私の構造です....

州1

CT1-1
     - Car_Model Post-CT1-1 (the posts of child)
     - Car_Model Post-CT1-2
CT2-1
     - Car_Model Post-CT2-2
CT3-1
     - Car_Model Post-CT3-1

州2

CT1-2
CT2-2
CT3-2

州3

CT1-3
CT2-3
CT3-3

これは私が2つの分類法と子供を表示するためにトリプルドロップダウンを表示するためにしたことの論理です。

  • 1ドロップ目------>州(分類学)
  • 2滴目------>市(州分類の子)
  • 3滴目------>メーカー(分類)

今ではなく3番目のドロップの製造元の代わりに私は2番目のドロップを選択する際に分類学の用語IDからの投稿をクエリする必要があります

 <!-- WORKING LOGIC Triple Drop Down Start -->

 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script>
 <script type="text/javascript">
$(function()
{
    $('#main_cat').change(function()
    {
        var $mainCat=$('#main_cat').val();

        // call ajax
        $("#sub_cat").empty();
        $("#manu_cat").empty();
        $.ajax
        (
            {
                url:"<?php bloginfo('wpurl'); ?>/wp-admin/admin-ajax.php",     
                type:'POST',
                data:'action=my_special_ajax_call&main_catid=' + $mainCat,

                success:function(results)
                {
                    //  alert(results);
                    $("#sub_cat").removeAttr("disabled");       
                    $("#sub_cat").append(results);
                // it should be closed here an perform new ajax call not in success ok ? 
                    // Passing the sub_cat to the function for displaying 3rd drop down list
                    $(function()
                    {
                        $('#sub_cat').change(function()
                        {
                            var $subCat=$('#sub_cat').val();

                            // call ajax
                            $("#manu_cat").empty();
                            console.log($("#manu_cat"));
                            $.ajax
                            (
                                {
                                    url:"<?php bloginfo('wpurl'); ?>/wp-admin/admin-ajax.php",     
                                    type:'POST',
                                    data:'action=my_special_ajax_call&main_brand_id=' + $subCat,

                                    success:function(results)
                                    {
                                        //  alert(results);
                                        $("#manu_cat").empty();
                                        $("#manu_cat").removeAttr("disabled");      
                                        $("#manu_cat").append(results); 
                                    }
                                }
                            );                                    
                        });
                    }); // function end for manufature jQuery
                }
            }
        );                                    
    });
});     
// for manufacturer logic paste here

 </script>
 <style type="text/css">
 #content{width:auto; height:400px; margin:50px;}
 </style>

 <form role="search" method="get" id="searchform" action="<?php echo get_option('siteurl');?>/">
<div id="content">
    <?php 
        wp_dropdown_categories('show_count=0&selected=-1&hierarchical=1&depth=1&hide_empty=0&exclude=1&show_option_none=Select State&name=main_cat&taxonomy=state');
    ?>
    <select name="sub_cat" id="sub_cat" disabled="disabled"></select>
    <select name="manu_cat" id="manu_cat" disabled="disabled"></select>

    <input type="submit" id="searchsubmit" value="Search" />        
</div>
</form> 


<!-- WORKING LOGIC Triple Drop Down End -->

Functions.php

function implement_ajax() {
if(isset($_POST['main_catid']))
        {
        $categories=  get_categories('child_of='.$_POST['main_catid'].'&hide_empty=0'.'&taxonomy=state');
//change the taxonomy state in your case
          foreach ($categories as $cat) {
            $option .= '<option value="'.$cat->term_id.'">';
            $option .= $cat->cat_name;
            //$option .= ' ('.$cat->category_count.')';
            $option .= '</option>';
          }

          echo '<option value="-1" selected="selected">Select City</option>'.$option;
        die();
        } // end if

if(isset($_POST['main_brand_id']))
        {
        $categories=  get_categories('&hide_empty=0'.'&taxonomy=manufacturer');
//change the taxonomy manufacturer in your case
          foreach ($categories as $cat) {
            $options .= '<option value="'.$cat->term_id.'">';
            $options .= $cat->cat_name;
            //$option .= ' ('.$cat->category_count.')';
            $options .= '</option>';
          }

          echo '<option value="-1" selected="selected">Select Make</option>'.$options;
        die();
        } // end if


}
add_action('wp_ajax_my_special_ajax_call', 'implement_ajax');
add_action('wp_ajax_nopriv_my_special_ajax_call', 'implement_ajax');//for users that are not logged in.

この行から始まるロジックif(isset($ _ POST ['main_brand_id'])))を置き換える必要があるので、ここで(isset($ _ POST ['main_brand_id'])))投稿を取得するには、分類法のterm_idを渡さなければなりません。タイトルを投稿します。誰かが私を助けてくれることを願っています........

1
Solomon Henry

私は問題を解決しました

if(isset($_POST['main_brand_id']))
        {
        $term_id .= $_POST['main_brand_id'];
        $term = get_term( $term_id, 'state' );
        $slug = $term->slug;
        global $post;
        $post_id = $post->ID;
        $args = array( 'post_type' =>'dealers','taxonomy'=>'state', 'term' => $slug );
        $myposts = get_posts( $args );

        foreach( $myposts as $post ) :    setup_postdata($post);
            echo '<option value="'.$post->ID.'">'
                $options .=  the_title();
            echo '</option>';
        endforeach;
        die();
        } // end if

上記のコードでは、子の分類用語を選択すると、投稿のタイトルがドロップダウンで表示されます。先に進んでコードを使用してください...........

0
Solomon Henry