🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Q&A

解決済

1回答

1452閲覧

ソート機能が反映されず、並び順を変更しても何も起こらない

ICONu

総合スコア7

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

0グッド

1クリップ

投稿2020/12/23 13:40

編集2020/12/24 04:25

ネットの記事を参考にソート機能を作成したが、反映されない。

現在Wordpressのプラグイン bbpress を利用してサービスを作成しています。
bbpressは掲示板なのですが、投稿の並び順を並び替えしたいということで調べ、下にあるページを参考にしファイルにコードを追加しました。

参考にしたページ

ファイルにコードを追加したところ、ソート機能の見た目はできましたが並び替えの項目を選んでも並び替えが反映されません。

PHP

1<?php 2 $arg = array( 3 'meta_key' => $_GET['meta_key'], 4 'orderby' => $_GET['orderby'], 5 'order' => $_GET['order'], 6 ); 7?> 8 9<?php if ( !bbp_is_forum_category() && bbp_has_topics($arg) ) : ?> 10 11<div class="bbp-sort"> 12 並び順: 13 <select id="bbp-sort-topics"> 14 <option value="<?php echo esc_html(add_query_arg(array('meta_key'=> '', 'orderby'=>'', 'order'=>''))); ?>">選択</option> 15 <option value="<?php echo esc_html(add_query_arg(array('meta_key'=> '_bbp_last_active_time', 'orderby'=>'meta_value', 'order'=>'DESC'))); ?>" <?php if($_GET['meta_key'] == "_bbp_last_active_time" && $_GET['orderby']=="meta_value" && $_GET['order'] == "DESC") echo 'selected'; ?>>新着コメント順</option> 16 <option value="<?php echo esc_html(add_query_arg(array('meta_key'=> '_bbp_last_active_time', 'orderby'=>'date', 'order'=>'DESC'))); ?>" <?php if($_GET['meta_key'] == "_bbp_last_active_time" && $_GET['orderby']=="date" && $_GET['order'] == "DESC") echo 'selected'; ?>>新着トピック順</option> 17 <option value="<?php echo esc_html(add_query_arg(array('meta_key'=> '_bbp_reply_count', 'orderby'=>'meta_value_num', 'order'=>'DESC'))); ?>" <?php if($_GET['meta_key'] == "_bbp_reply_count" && $_GET['orderby']=="meta_value_num" && $_GET['order'] == "DESC") echo 'selected'; ?>>コメント多い順</option> 18 <option value="<?php echo esc_html(add_query_arg(array('meta_key'=> '_bbp_reply_count', 'orderby'=>'meta_value_num', 'order'=>'ASC'))); ?>" <?php if($_GET['meta_key'] == "_bbp_reply_count" && $_GET['orderby']=="meta_value_num" && $_GET['order'] == "ASC") echo 'selected'; ?>>コメント少ない順</option> 19 </select> 20</div> 21<script> 22 $(document).ready(function() { 23 $('#bbp-sort-topics').bind('change', function() { 24 location.href= jQuery('#bbp-sort-topics').val(); 25 }); 26 }); 27</script>

詳しくは参考にしたページに乗っていますが、このようなコードを追記しました。
PHPに関してまだまだ勉強不足で、並び替え順を選んでも反映されない理由がわからず困っています。

よろしくお願いいたします。

追記

ソート機能から並び順を選択しても何も起こらず、画面の再表示すら行われない状態です。
よろしくお願いいたします。

エラー箇所

コンソールに出ていたエラーコード

console

1Uncaught TypeError: $ is not a function 2 at (index):653

コンソールに出ていたエラーコードの場所を見ると、

PHP

1 $(document).ready(function() {

スクリプトタグ内にある上記の行でエラーが発生しておりました。
何かの定義がうまくされていないということでしょうか...?

長くはなりますが、コードの全文も載せておきます。

PHP

1<?php 2 3/** 4 * Single Forum Content Part 5 * 6 * @package bbPress 7 * @subpackage Theme 8 */ 9 10// Exit if accessed directly 11defined( 'ABSPATH' ) || exit; 12 13?> 14 15<div id="bbpress-forums" class="bbpress-wrapper"> 16 17 <?php bbp_breadcrumb(); ?> 18 19 <?php bbp_forum_subscription_link(); ?> 20 21 <?php do_action( 'bbp_template_before_single_forum' ); ?> 22 23 <?php if ( post_password_required() ) : ?> 24 25 <?php bbp_get_template_part( 'form', 'protected' ); ?> 26 27 <?php else : ?> 28 29 <?php bbp_single_forum_description(); ?> 30 31 <?php if ( bbp_has_forums() ) : ?> 32 33 <?php bbp_get_template_part( 'loop', 'forums' ); ?> 34 35 <?php endif; ?> 36 37 <?php 38 $arg = array( 39 'meta_key' => $_GET['meta_key'], 40 'orderby' => $_GET['orderby'], 41 'order' => $_GET['order'], 42 ); 43?> 44 45<?php if ( !bbp_is_forum_category() && bbp_has_topics($arg) ) : ?> 46 47<div class="bbp-sort"> 48 並び順: 49 <select id="bbp-sort-topics"> 50 <option value="<?php echo esc_html(add_query_arg(array('meta_key'=> '', 'orderby'=>'', 'order'=>''))); ?>">選択</option> 51 <option value="<?php echo esc_html(add_query_arg(array('meta_key'=> '_bbp_last_active_time', 'orderby'=>'meta_value', 'order'=>'DESC'))); ?>" <?php if($_GET['meta_key'] == "_bbp_last_active_time" && $_GET['orderby']=="meta_value" && $_GET['order'] == "DESC") echo 'selected'; ?>>新着コメント順</option> 52 <option value="<?php echo esc_html(add_query_arg(array('meta_key'=> '_bbp_last_active_time', 'orderby'=>'date', 'order'=>'DESC'))); ?>" <?php if($_GET['meta_key'] == "_bbp_last_active_time" && $_GET['orderby']=="date" && $_GET['order'] == "DESC") echo 'selected'; ?>>新着トピック順</option> 53 <option value="<?php echo esc_html(add_query_arg(array('meta_key'=> '_bbp_reply_count', 'orderby'=>'meta_value_num', 'order'=>'DESC'))); ?>" <?php if($_GET['meta_key'] == "_bbp_reply_count" && $_GET['orderby']=="meta_value_num" && $_GET['order'] == "DESC") echo 'selected'; ?>>コメント多い順</option> 54 <option value="<?php echo esc_html(add_query_arg(array('meta_key'=> '_bbp_reply_count', 'orderby'=>'meta_value_num', 'order'=>'ASC'))); ?>" <?php if($_GET['meta_key'] == "_bbp_reply_count" && $_GET['orderby']=="meta_value_num" && $_GET['order'] == "ASC") echo 'selected'; ?>>コメント少ない順</option> 55 </select> 56</div> 57<script> 58 $(document).ready(function() { 59 $('#bbp-sort-topics').bind('change', function() { 60 location.href= jQuery('#bbp-sort-topics').val(); 61 }); 62 }); 63</script> 64 65 <?php bbp_get_template_part( 'pagination', 'topics' ); ?> 66 67 <?php bbp_get_template_part( 'loop', 'topics' ); ?> 68 69 <?php bbp_get_template_part( 'pagination', 'topics' ); ?> 70 71 <?php bbp_get_template_part( 'form', 'topic' ); ?> 72 73 <?php elseif ( ! bbp_is_forum_category() ) : ?> 74 75 <?php bbp_get_template_part( 'feedback', 'no-topics' ); ?> 76 77 <?php bbp_get_template_part( 'form', 'topic' ); ?> 78 79 <?php endif; ?> 80 81 <?php endif; ?> 82 83 <?php do_action( 'bbp_template_after_single_forum' ); ?> 84 85</div>

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YT0014

2020/12/24 01:23

反映されない、というのは、どのような状況でしょうか? 並び順を変更しても、何も起こらない、のでしょうか? 並び順を変更すると、画面の表示を再度行うが、変更前と同じ並び順になる、のでしょうか?
ICONu

2020/12/24 02:52

こちらの記入不足で申し訳ございません。 内容を追記いたしました。
unrealsho

2020/12/24 03:22

画面の再表示すら行われていないとすればjavascriptのあたりが原因かもしれないですね。 デベロッパーツールなどにエラー表示されてないですか?
ICONu

2020/12/24 04:10

内容を追記いたしました。 親身にご相談に乗っていただきありがとうございます。
guest

回答1

0

ベストアンサー

jQuery読み込んでいますか?
ページのhead部分に以下のスクリプトを貼ってみてください。

<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>

投稿2020/12/24 07:35

unrealsho

総合スコア93

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ICONu

2020/12/24 13:23

完全に頭から抜け落ちていました... jQueryを読み込まないといけなかったのですね。 読み込みをしたら無事に動作しました。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問