ネットの記事を参考にソート機能を作成したが、反映されない。
現在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>
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー