3

ええと、私は何時間も何時間もどこでも探していました、そしてこれをする方法はたくさんあるようです、私はこれまでAjaxを使ったことがなく、havascriptの知識がほとんどないので、それは私には難しすぎます。

フロントページ(インデックス)またはワードプレスにループがあり、フィルター、さまざまなカテゴリのドロップダウンメニューが必要です。クリックすると、同じ画面に表示される投稿はそのカテゴリの投稿のみになります。ループをajaxで更新する必要があるので、フィルターを使用している間、ページ全体がそのまま残ります。

これは私が私のインデックスファイルに持っているものです:

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery", "1.2.6")</script>
<script type="text/javascript">
$(function(){
     $('#main_cat').change(function(){
         var $mainCat=$('#main_cat').val();
          $("#sub_cat").empty();
              // call ajax
                  $.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 *').fadeOut(500);
              $('#sub_cat + p').fadeOut(500);
              $("#sub_cat").append(results);
                  $('#sub_cat').load('http://localhost:8888/public_html/wp-content/themes/twentyten-child/templateloop.php');
              $('#sub_cat + p').fadeIn(1);
                  }
                      });

            }
    );
});

カテゴリのドロップダウンは次のようになります。

<?php
wp_dropdown_categories('show_count=0&selected=-1&hierarchical=1&depth=1&hide_empty=0&exclude=1&show_option_none=Main Categories&name=main_cat');
?>

したがって、ドロップダウンは機能し、1つのカテゴリ(wp_dropdown_categoriesから取得)のみをフィルタリングするクエリを使用してwpテンプレートファイルをajaxロードすることになっています。また、templateloop.phpファイルにダミーテキストがある場合はロードは正常に機能しますが、wpクエリがある場合は何も起こりません。ループが配置され、テンプレートファイルによって切り替えられるはずだった#sub_cat divは、すべての投稿リストとともに消え、ページの上半分だけが残ります(#sub_cat divがあった場所まで) )。

非常に多くの試行錯誤があり、テンプレートファイル、インデックスファイル、関数でクエリ呼び出しを試してみましたが、結果が得られないようです。

私のfunctions.phpファイルでiveはこれを手に入れました:

function implement_ajax() {
if(isset($_POST['main_catid']))
            {
              echo '<?php $paged = (get_query_var("paged")) ? get_query_var("paged") : 1; query_posts("cat='.$_GET['maincatid'].'&paged=$paged"); ?>';

            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.

そして、このすべての前にインデックスファイルで使用していたクエリ行は次のとおりです。

       <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
 query_posts("cat=1,2,3,4,5&paged=$paged"); ?>

wp_queryを使用してみましたが、どこにも行きません。本当にガイダンスが必要です。どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

0

それは必要以上に複雑です。追加のクエリや AJAX はまったく必要ありません。テーマが本来あるpost_class()べき機能を使用している場合、投稿にはすべて、カテゴリに関連付けられたクラスがあります。これらのクラスは、たとえば「category-」--「category-uncategorized」を前に付けたカテゴリ名です。本当に必要なのは、これらのクラスに基づいて投稿を表示および非表示にすることだけです。

私はあなたの状況について特に何も書いていませんが、いくつかの非常に大きな検索結果 (ページあたり 400 以上の場合もあります) でこれを行いましたが、非常にうまく機能します。アイデアは次のとおりです。jQuery を使用して選択メニューを監視します。あなたは変化が欲しい。wp_dropdown_categories()選択が変更されたら、情報を解析してカテゴリ (マークアップに含まれる情報をすぐにはわかりません)、show()選択されたカテゴリ、およびhide()その他すべてを解決します。

于 2012-10-13T15:01:07.600 に答える