###実現したいこと
WordPressのタグ入力でオートコンプリートを付けたいです。
ゴールはこのような感じです。
https://jsfiddle.net/xrv2egta/
###問題
このゴールを目指して後述する「該当のソースコード」を書きました。
大体は出来たのですが、JSON.parse
しても配列の形式にならない点が問題です。と言いますのは、
上記でゴールとしたJSfiddleの配列はこうですが、
javascript
1 var wordlist = [ 2 "あいうえお", 3 "かきくけこ", 4 "さしすせそ", 5 ];
しかし後述する該当のソースコードではこうなってしまうんです。
javascript
1 var wordlist = JSON.parse('[ 2 "あいうえお", 3 "かきくけこ", 4 "さしすせそ", 5 ]');
このように、「JSON.parse
されたもの」と「オートコンプリートで使うためのもの」とが違う形になってしまうところで躓いています。
どうしたら同じになるでしょうか?
###該当のソースコード
index.phpにこのような内容を書いています。あとは配列の形だけできればゴールだと思うのですが、どうしてもできません。
php
1<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 2<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> 3 4<input type="text" id="hogehoge" class="ui-autocomplete-input" autocomplete="off"> 5 6<?php 7// 上位100件のスラッグを、あいうえお順に取得 8$terms_args = array( 'number' => 100, 'orderby' => 'count', 'order' => 'DESC' ); 9$terms_all = get_terms( 'my_tag', $terms_args ); 10$terms_arr = array(); 11if( !empty( $terms_all ) && !is_wp_error( $terms_all ) ): 12 foreach( $terms_all as $term ) : 13 array_push( $terms_arr, $term->name ); 14 endforeach; 15endif; 16$terms_json = json_encode( $terms_arr, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES ) ; 17?> 18 19<script> 20// オートコンプリート機能を実装する 21(function($){ 22 // JSON.parseを使って配列を受け取る 23 var test = JSON.parse('<?php echo $terms_json; ?>'); 24 // 配列を使ってオ―とコンプリートを表示する 25 $( "#hogehoge" ).autocomplete({ 26 source: test 27 }); 28})(jQuery); 29</script>
こちらのソースコードでは、JSON.parse
されたvar test
の中身が、オートコンプリートに使える形の配列になってくれないわけです。
これはどのようにすれば正しい配列になるのでしょうか?
長々とすみません。どなたか解決策が分かる方がいらっしゃいましたら教えて頂けませんでしょうか?
どうぞ宜しくお願い致します。
回答3件
あなたの回答
tips
プレビュー