サポート » 使い方全般 » カスタムフィールドでカテゴリ付けして取得した固定ページ一覧の並び順

  • 解決済 horizon58

    (@horizon58)


    カスタムフィールドでメタ設定をして固定ページをメニューに一覧取得・表示させているのですが、記事の並び順がデフォルト設定で新しいものが上に来る(これが降順なのか昇順なのかわかりませんが)ようになっており古い記事を上に表示させる設定にしたいのですが、方法がわかりません。

    現在は以下のようにウィジェットのフリースペースに記述しています。

    <!--ここから
    
    <?php
    $my_query = new WP_Query();
    $my_query->query('post_type=page&meta_key=category&meta_value=カテゴリ名');
    
    if ($my_query->have_posts()):
    //カテゴリを出力
    echo get_post_custom_values('category');
    ?>
    
        <ul class="side-menu">
        <?php
        //ページリストを出力
    	 while ($my_query->have_posts()) : $my_query->the_post(); ?>
    
    <li><a>"><?php the_title(); ?></a></li>
        <?php endwhile; ?>
    
    <?php endif; ?>
    
    ここまで --!>

    先頭の$my_query = new WP_Query();

    $my_query = new WP_Query( array ( 'post_type' => 'page', 'meta_key' => 'category', 'orderby' => 'date','order' => 'DESC' ) );

    としてみましたが、うまくいきません。
    記述する場所が間違っているのでしょうか?

    わかる方教えていただけると大変助かります。
    どうぞよろしくお願いします。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • トピック投稿者 horizon58

    (@horizon58)

    コードの記述を間違えたので追記します↓↓↓

    <?php
    $my_query = new WP_Query(  );
    $my_query->query('post_type=page&meta_key=category&meta_value=カテゴリ名');
    
    if ($my_query->have_posts()):
    //カテゴリを出力
    echo get_post_custom_values('category');
    ?>
    
        <ul class="side-menu">
        <?php
        //ページリストを出力
    	 while ($my_query->have_posts()) : $my_query->the_post(); ?>
            <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
        <?php endwhile; ?>
        </ul>
    <?php endif; ?>

    以上どうぞよろしくお願いします。

    'order' => 'ASC'

    だと思います。

    トピック投稿者 horizon58

    (@horizon58)

    ご返信ありがとうございます。

    古い記事を上に表示させるには昇順に設定すれば良いのですね。

    しかしご指摘の箇所を以下のように’ASC’としましたが動かないようです。

    降順・昇順が問題ではないのでしょうか?

    $my_query = new WP_Query( array ( 'post_type' => 'page', 'meta_key' => 'category', 'orderby' => 'date','order' => 'ASC' ) );

    動かない、という現象がよく分からないもので、
    具体的に教えてもらってもよろしいですか?

    下記だとどうなりますか?

    <ul class="side-menu">
    <?php
    $my_query = new WP_Query( array ( 'post_type' => 'page', 'meta_key' => 'category', 'orderby' => 'date','order' => 'ASC' ) );?>
    if($my_query->have_posts()):
    ?>
    <?php while($my_query->have_posts()): $my_query->the_post();?>
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endwhile; ?>
    </ul>

    トピック投稿者 horizon58

    (@horizon58)

    ご返信ありがとうございます。

    動かないという意味はメニューのリンクが思う通りに並び替えられないという意味でプログラムが動かないという意味ではありません。

    紛らわしい表現を使ってしまい申し訳ありません。

    現状はカスタムフィールドでカテゴリ付けして取得した固定ページリストが降順で表示されています。

    この固定ページリストを昇順に並び変えたいのですがやり方がわからず困っています。

    ちなみに書かれたコードを試してみましたが構文エラーになるようです。

    すみません、遅レスになりました。

    コード、ミスがあったので、下記で試して頂けますか?

    <ul class="side-menu">
    <?php
    $my_query = new WP_Query( array ( 'post_type' => 'page', 'meta_key' => 'category', 'orderby' => 'date','order' => 'ASC' ) );
    if($my_query->have_posts()):
    ?>
    <?php while($my_query->have_posts()): $my_query->the_post();?>
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endwhile; ?>
    </ul>

    このへんも気になりますが。
    [解決済み] query_postsの並び順 (5 件の投稿)

    トピック投稿者 horizon58

    (@horizon58)

    返信ありがとうございます。

    上記コードを試してみましたが、下記の構文エラーになるようです。

    Parse error: syntax error, unexpected T_STRING in /virtual/○○/public_html/www.○○/wordpress/wp-content/plugins/exec-php/includes/runtime.php(42) : eval()’d code on line 3

    exec-phpというプラグインを入れているのですが、エラーに関係しているのでしょうか?

    また可能であれば下記コードに並び順指定のコードを付け加える形で実現させられればと思っています。(このコードではエラーは出ず、カテゴリ名を指定した固定ページが降順でリスト表示されます)

    <?php
    $my_query = new WP_Query(  );
    $my_query->query('post_type=page&meta_key=category&meta_value=カテゴリ名');
    
    if ($my_query->have_posts()):
    //カテゴリを出力
    echo get_post_custom_values('category');
    ?>
    
        <ul class="side-menu">
        <?php
        //ページリストを出力
    	 while ($my_query->have_posts()) : $my_query->the_post(); ?>
            <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
        <?php endwhile; ?>
        </ul>
    <?php endif; ?>

    どうぞよろしくお願いします。

    お使いのテーマを、デフォルトテーマ(Twenty Eleven、Twenty Ten)にして試していただけませんでしょうか?

    トピック投稿者 horizon58

    (@horizon58)

    ご指摘のテーマを変更してみましたが、同様のエラーが発生するようです。

    なるほど。。。

    exec-phpを停止させても変わらないですか?

    トピック投稿者 horizon58

    (@horizon58)

    Exec-PHPは記事やテキストウィジェット内でPHPを使えるようにするためのプラグインです。

    今回はPHPを使ってリストを並び変えたいので、このプラグインは必要かと思います。

    エラーの原因は構文エラーとなっていますが?原因はわかりませんか?

    トピック投稿者 horizon58

    (@horizon58)

    色々やってみた結果以下のような記述を足すことで解決しました。

    &orderby=date&order=ASC'

    記述した箇所
    $my_query->query('post_type=page&meta_key=category&meta_value=カテゴリ名&orderby=date&order=ASC');

    補足ですがorderbyの指定を変えると色々な並び替えができるようです。

    date→日付
    modified→最終更新日時
    ID→ページのID
    rand→ランダム
    comment_count→コメント数
    meta_value→カスタムフィールドの値
    並び順は昇順:ASC、降順:DESC

    sz1320さん、いろいろと参考になりました。

    ありがとうございました。

    トピック投稿者 horizon58

    (@horizon58)

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • トピック「カスタムフィールドでカテゴリ付けして取得した固定ページ一覧の並び順」には新たに返信することはできません。