サポート » テーマ » 固定ページに特定のカテゴリに登録している記事を一覧表示

  • 解決済 NANOPASS

    (@nanopass)


    固定ページに特定のカテゴリーに登録された記事を一覧表示させる為にquery postsを使って
    表示させようとしているのですが上手く動作してくれません。

    <form name="irekae" method="post" id="sort_form3" class="sort_form3">
    <select name='narabi' onChange="document.forms['irekae'].submit()" >
    <option value="sort1"<?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort1') echo ' selected="selected"';?>>公開日 昇順</option>
    <option value="sort2"<?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort1') echo ' selected="selected"';?>>公開日 降順</option>
    </select>
    </form>
    
    <?php $sortset = $_POST['narabi']; ?>
    <?php $sortall = array(
                              "sort1" => 'order=DESC&orderby=meta_value_num&meta_key=release_date&',
                              "sort2" => 'order=ASC&orderby=meta_value_num&meta_key=release_date&',
                           ); ?>
    <?php if($sortset != '') {
           $sort = $sortall[$sortset];
        } else {
           $sort = $sortall["sort1"];} ?>
    
    <?php $args = array(
    	'post_type' => 'post',
    	'category_name' => 'app',
    	'paged' => $paged,
    	'posts_per_page' => 10,
    	'order' => 'date',
    	'order' => 'DESC',
    );?>
    <?php query_posts( $args . $sort . $query_string); ?>

    <?php query_posts( $args . $sort . $query_string); ?>を下記のようにすると正常に
    表示されるのですが、そうするとソート機能が動作しないので困っています。
    <?php query_posts( $args ); ?>

    どのようにすれば良いのか教えて頂ければ幸いです。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • query_postsの引数を、
    配列で作るのと、文字列連結で作るのとをごちゃ混ぜにしてるのが問題だと思われます。

    配列か、文字列連結か、どちらかで統一して書いたらいかがでしょうか。

    モデレーター jim912

    (@jim912)

    配列と文字列を結合することはできません。 $args を文字列にするか、sort1, sort2 も配列にして、$args にマージするようにする必要があります。

    トピック投稿者 NANOPASS

    (@nanopass)

    勉強不足で申し訳ありません。
    $args を文字列にするとはどういう意味なんでしょうか?

    トピック投稿者 NANOPASS

    (@nanopass)

    ソートの記述とquery_postsの記述を変更する事で特定のカテゴリーに登録されている記事が
    表示されるように成り、ソートも正常に機能しました。

    <?php $sortset = $_POST['narabi']; ?>
    <?php $sortall = array(
                              "sort1" => 'post_type=post&category_name=****&paged=$paged&orderby=date&posts_per_page=25&order=DESC&orderby=meta_value_num&meta_key=release_date&',
                              "sort2" => 'post_type=post&category_name=****&paged=$paged&orderby=date&posts_per_page=25&order=ASC&orderby=meta_value_num&meta_key=release_date&',
                           ); ?>
    <?php if($sortset != '') {
           $sort = $sortall[$sortset];
        } else {
           $sort = $sortall["sort1"];} ?>
    
    <?php query_posts( $sort ); ?>

    ただ、記事が30件あるにも関わらず5件しか表示されずページ送りも表示されません。
    アドバイスをお願い致します。

    トピック投稿者 NANOPASS

    (@nanopass)

    皆様のアドバイスのおかげで9割ほど解決する事ができました。

    <?php
    query_posts($query_string);
    query_posts('cat=*&paged='.$paged .$sort);
    ?>

    上記に変更する事で特定のカテゴリに登録されている記事の一覧表示はできました。

    問題はカスタムフィールドの値でソートができない事です。
    カスタムフィールドの値は0000/00/00となっており、この値でソートするにはどうすれば
    良いのでしょうか?アドバイスをお願いします。

    トピック投稿者 NANOPASS

    (@nanopass)

    色々、検索してどうにか希望するものができました。

    カスタムフィールドの値を全て8桁の文字数に変更し表示の際に0000/00/00になるように
    しました。

    <?php $release = post_custom('release_date');
         echo date("Y/m/d",strtotime("$release"));
    ?>

    ソートに関してか下記のようにする事で正常に機能させる事ができました。

    <?php $sortset = $_POST['narabi']; ?>
    <?php $sortall = array(
                              "sort1" => '&orderby=meta_value_num&meta_key=release_date&order=DESC',
                              "sort2" => '&orderby=meta_value_num&meta_key=release_date&order=ASC',
                           ); ?>
    <?php if($sortset != '') {
           $sort = $sortall[$sortset];
        } else {
           $sort = $sortall["sort1"];} ?>
    
    <?php
    query_posts($query_string);
    query_posts('&cat=2&paged='.$paged .$sort);
    ?>

    安易に質問せず自分で調べるべきだと実感しました、皆様
    本当に有り難うございます。

    トピック投稿者 NANOPASS

    (@nanopass)

    閉じます。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「固定ページに特定のカテゴリに登録している記事を一覧表示」には新たに返信することはできません。