0

質問があります:

アーカイブ テンプレート ページがあり、そこに 2 つのドロップダウン メニューを表示したい: アーカイブとカテゴリのドロップダウンと、たとえば 11 月のアーカイブをクリックすると、すべてのアイテムが 11 月から横に表示され、それも機能します。 .. ただし、メニュー項目を選択すると、このカテゴリの投稿だけでなく、すべての項目が表示されます。

コードは次のとおりです。

archives.php には次のコードがあります (ここではすべて正しいと思います...):

<div id="archive-browser">
    <div>
        <h4>Month</h4>
        <select id="month-choice">
            <option val="no-choice"> &mdash; </option>
            <?php wp_get_archives(array(
                'type'    => 'monthly',
                'format'  => 'option'
            )); ?>
        </select>
    </div>
    <div>
        <h4>Category</h4>
        <?php 
            wp_dropdown_categories('show_option_none= -- ');?> 
    </div>
</div>
<div id="archive-wrapper">
<div id="archive-pot">
</div></div>     

そして、Archives-getter.php という名前のもう 1 つのテンプレートには、次のコードがあり、どこかに間違いがあります。

<?php
    /*
        Template Name: Archives Getter
    */
    $year = htmlspecialchars(trim($_POST));
    $month = htmlspecialchars(trim($_POST));
    $cat = htmlspecialchars(trim($_POST));
    $querystring = "year=$year&monthnum=$month&cat=$cat&posts_per_page=-1";
    query_posts($querystring); 
?>
<?php if (($year == '') && ($month == '') && ($cat == '-1')) { ?>
    <table id="archives-table"><tr><td style='text-align: center; font-size: 15px; padding: 5px;'>Please choose from above.</td></tr></table>
<?php } else { ?>
    <table id="archives-table">
        <?php    
            if (have_posts()) : while (have_posts()) : the_post(); ?>
                <tr>
                    <td><img src="<?php echo get_post_meta($post->ID, 'PostThumb', true); ?>" alt="" style="width: 35px;" /></td>
                    <td><a href='<?php the_permalink(); ?>'><?php the_title(); ?></a></td>
                    <td><?php comments_popup_link(' ', '1 Comment', '% Comments'); ?></td>
                    <td><?php the_date('m/j/Y'); ?></td>
                </tr>
        <?php 
            endwhile; else:
                echo "<tr><td style='text-align: center; font-size: 15px; padding: 5px;'>Nothing found.</td></tr>";
            endif; 
        ?>
    </table>
<?php } ?>

この 2 つは相互に接続されているため、アーカイブ テンプレートを実行すると、getter からデータが呼び出されます。

間違いはクエリ文字列のどこかにあると思います...投稿ではなく、カテゴリのドロップダウンのみが表示されます。ご協力いただきありがとうございます。


ありがとうございます。しかし、アーカイブ ドロップダウンは正常に動作します...しかし、カテゴリ XY をクリックすると、カテゴリ ドロップダウンに彼女のカテゴリの投稿が表示されません。this と post フィールド名が接続されているため、Jquery コードは次のとおりです。

そして、投稿フィールド名は次のように変更されました:

$year = htmlspecialchars(trim($_POST['year_y']));
    $month = htmlspecialchars(trim($_POST['month_m']));
    $cat = htmlspecialchars(trim($_POST['cat_c']));



jQuery(function() {

    jQuery("#archive-wrapper").height(jQuery("#archive-pot").height());

    jQuery("#month-choice").change(function() {

        // Update category choice dynamically

        // This is much harder, needs another intermediary getter

    });

    jQuery("#archive-browser select").change(function() {

        jQuery("#archive-pot")
            .empty()
            .html("<div style='text-align: center; padding: 30px;'><img src='' /></div>");



        var dateArray = jQuery("#month-choice").val().split("/");

        var y = dateArray[3];

        var m = dateArray[4];

        var c = jQuery("#cat").val();



        jQuery.ajax({



            url: "/archive-getter/", 

            dataType: "html",

            type: "POST",

            data: ({

                "year_y": y,

                "month_m" : m,

                "cat_c" : c


            }),

            success: function(data) {

                jQuery("#archive-pot").html(data);



                jQuery("#archive-wrapper").animate({

                    height: jQuery("#archives-table tr").length * 50

                });



            }



        });



    });



});
4

1 に答える 1

0

ここで投稿フィールド名を指定する必要があります。

$year = htmlspecialchars(trim($_POST));
$month = htmlspecialchars(trim($_POST));
$cat = htmlspecialchars(trim($_POST));

このようなものにする必要があります(名前はフォームフィールドによって異なります

$year = htmlspecialchars(trim($_POST['year_y']));
$month = htmlspecialchars(trim($_POST['month_m']));
$cat = htmlspecialchars(trim($_POST['cat_c']));

この種のフォーム入力には名前が必要です:

<select id="month-choice">

このような

<select id="month-choice" name="month">
于 2012-07-15T16:13:42.983 に答える