サポート » 使い方全般 » 価格順ボタンを設置したいです。

  • 解決済 Beat

    (@kitakaru)


    初めて投稿させて頂きます。
    HTMLやCSSに関しては多少の知識がありますが、
    PHPは全くのビギナーのBeatと申します。


    投稿した記事を価格順で並び替えるボタンを設置したいと思っています。
    ※作りたいのは、全記事を並び替えたく、
    絞り込む必要はない感じです。

    kz様の

    <ul>
    <?php
    $url = sprintf( 'http://%1$s%2$s', $_SERVER["HTTP_HOST"], $_SERVER["REDIRECT_URL"] );
    printf( '<li><a href="%s?orderby=comment_count&order=DESC">コメントの多い順</a></li>', $url );
    printf( '<li><a href="%s?orderby=comment_count&order=ASC">コメントの少ない順</a></li>', $url );
    printf( '<li><a href="%s?orderby=post_date&order=DESC">日付の新しい順</a></li>', $url );
    printf( '<li><a href="%s?orderby=post_date&order=ASC">日付の古い順</a></li>', $url );
    ?>
    </ul>

    というソースを参考にさせて頂きましたが、
    カスタムフィールドテンプレートでpriceとつけた価格のIDを
    meta_key(meta_value)の値として持たせる方法が分からず困っています。

    WPマスターな皆様、どうかご教示下さい。
    よろしくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 価格 price は、投稿(post)に付いているという前提です。リンクのところは適当にボタンに直してください。ボタンにするときは、POST/GET に応じて、
    $sort_order = htmlspecialchars($_GET[‘sort_order’]);
    も修正してください。

    ★functions.php

    <?php
    add_action( 'pre_get_posts', 'modify_post_order' );
    function modify_post_order( $query ) {
      if ($query->is_main_query()) {
        if (is_category() || is_home()) {
          $sort_order = htmlspecialchars($_GET['sort_order']);
          if ($sort_order=='') {  // 初期表示
              // ■ 日付降順 ■
              $query->set( 'orderby', 'post_date' );
              $query->set( 'order', 'DESC' );
          } else {
              // ■ 価格順 ■
              $query->set( 'meta_key', 'price' );
              $query->set( 'orderby', 'meta_value_num' );
              $query->set( 'order', $sort_order );
          }
        }
      }
    }
    ?>

    ★ category.php

    <?php
    $term_obj = get_queried_object();
    $url = get_term_link($term_obj,'category');
    ?>
    <ul>
    <li><a href="<?php echo $url; ?>?sort_order=ASC">価格の安い順</a></li>
    <li><a href="<?php echo $url; ?>?sort_order=DESC">価格の高い順</a></li>
    </ul>

    ★ index.php

    <?php $url = get_site_url(); ?>
    <ul>
    <li><a href="<?php echo $url; ?>?sort_order=ASC">価格の安い順</a></li>
    <li><a href="<?php echo $url; ?>?sort_order=DESC">価格の高い順</a></li>
    </ul>

    トピック投稿者 Beat

    (@kitakaru)

    →pluto1234様
    ご丁寧に、また迅速にお答え頂き、
    本当にありがとうございます!
    自宅に帰りましたら頂いたソースを参考にトライしてみます。

    またご連絡致しますが、
    取り急ぎのお礼でした。
    ありがとうございます!!

    トピック投稿者 Beat

    (@kitakaru)

    →pluto1234様

    こんばんは。無事、理想通りの動作ができました。

    頂いたソースがどんな動きをしているのか、
    しっかり読んで勉強していきたいと思います。

    本当に助かりました。心から感謝致します♪
    たいしたサイトではないですが、
    制作しているサイトが完成したらまたご連絡させて下さい。
    ありがとうございました!

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「価格順ボタンを設置したいです。」には新たに返信することはできません。