質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

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

Q&A

解決済

2回答

833閲覧

Ajax Load More 抽出条件にsuppress_filtersを追加したい

YuriY

総合スコア33

WordPress

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

0グッド

0クリップ

投稿2018/11/30 05:29

編集2018/12/04 07:46

無限スクロールの実行にAjax Load Moreプラグインを使用しています。
今回、多言語化対応をするためBogoというプラグインを使って日本語で作ったサイトの英語サイトを作成しています。

WP_queryの条件にsuppress_filters=>falseを追加することで、現在指定しているlocateのみのデータを抽出することができるのですが、抽出条件は管理画面のプラグイン設定に指定されているものだけしか追加できないため指定したlocateに関係なくすべてのデータが抽出されてしまっています。

何かお分かりになる方がいらっしゃったらご助言よろしくお願いいたします。

[ajax_load_more id="aaa_list" container_type="div" css_classes=".aaa_container" post_type="aaa" posts_per_page="18" taxonomy="areatype" taxonomy_terms="'.$areatype. '" taxonomy_operator="IN" orderby="title" offset="18"]

// ALM Core Filter Hook
フックが用意されているのでadd_filterしてみましたが正常に動作しません。
カスタマイズをしたことがないので記述方法があっているのかもわからず困っております。
使い方自体間違っているような気もしています。

* alm_query_args_{id} * * ALM Core Filter Hook * * @return $args; */ $args = apply_filters('alm_query_args_'.$id, $args, $post_id); // ALM Core Filter Hook
/* Ajax Load More 言語指定の設定を追加 */ function my_aaa_list($args, $id){ // $id = Current post/page ID where the ALM shortcode is found // ALM Shortcode // [ajax_load_more id="movie_listing" posts_per_page="6" button_label="More Movies"] // 'movie_listing' is the value of the 'id' parameter in the shortcode. $args = Array( 'post_type' => 'aaa', 'posts_per_page' => 18, 'suppress_filters' => false, 'meta_value' => true, 'tax_query' => array( array( 'taxonomy' => 'areatype', 'field' => 'slug', 'terms' => $areatype, ) ), ); return $args; } add_filter( 'alm_query_args_aaa_list', 'my_aaa_list', 10, 2);

何かお分かりになる方がいらっしゃったらご助言よろしくお願いいたします。

ショートコードのパラメータに
custom_args="" というのがあって
受け取り側で

分解してarg[]に変換する処理をしているようでした。
なので、custom_args="suppress_filters:false;"を追加してみましたが

// Custom Args var_dump($custom_args); if(!empty($custom_args)){ $custom_args_array = explode(";",$custom_args); // Split the $custom_args at ',' foreach($custom_args_array as $argument){ // Loop each $argument $argument = preg_replace('/\s+/', '', $argument); // Remove all whitespace $argument = explode(":",$argument); // Split the $argument at ':' $argument_arr = explode(",", $argument[1]); // explode $argument[1] at ',' if(sizeof($argument_arr) > 1){ $args[$argument[0]] = $argument_arr; }else{ $args[$argument[0]] = $argument[1]; } } }

ブラウザ側のデバッガをみると
SyntaxError: Unexpected token s in JSON at position 0

シンタックスエラーが出ています。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/12/02 08:44

結論はWordPress Infinite Scroll – Ajax Load Moreで英語のページだけ表示出来ればいいのでしょうか?
YuriY

2018/12/03 02:38

その通りです。方法はどうであれ、Bogoを使って作成したカスタム投稿タイプのデータの一覧をAjax Load Moreを使って英語と日本語で切り分けで表示したいです。
guest

回答2

0

自己解決

WP_Queryの条件に
'lang' => 'ja'
もしくは
'lang' => 'en_EN'

を追加することで

切り分けられました。

結局、

'suppress_filters' => false,

はAjax Load Moreプラグイン内では効果がないようです。

投稿2018/12/05 03:58

YuriY

総合スコア33

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

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

0

Bogoはカスタムフィールドを使っているので

'meta_key' => '_locale', 'meta_value' => 'en_US',

等で指定すればどうでしょう?

投稿2018/12/03 08:12

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

YuriY

2018/12/03 09:02

[ajax_load_more id="aaa_list" container_type="div" css_classes=".aaa_container" post_type="aaa" posts_per_page="18" taxonomy="areatype" taxonomy_terms="'.$areatype. '" taxonomy_operator="IN" orderby="title" offset="18" meta_key="_locale" meta_value="en_US" meta_compare="IN"] としてみましたが、返り値0件となり抽出できませんでした。 取得してくるデータの配列の中に_locale情報がありませんでした。 Langは存在しているのですが、ショートコードのパラメータにセットしても思った形のSQLに整形してくれないようです。
退会済みユーザー

退会済みユーザー

2018/12/03 11:01

いやいや、そんなパラメータをAjax Load Moreのショートコードで使えるとどこにも書いてないので無理でしょ。 $argsの配列に入れてみてください。
YuriY

2018/12/04 06:21

Ajax Load MoreのShortcode Builderにカスタムフィールドの設定もあったので使えるのかと思ってしまいました。 $args = Array( 'post_type' => 'aaa', 'posts_per_page' => 18, 'suppress_filters' => false, 'meta_value' => true, 'meta_key' => '_locale', 'meta_value' => 'en_US', 'tax_query' => array( array( 'taxonomy' => 'areatype', 'field' => 'slug', 'terms' => $areatype, ) ), ); これも試しましたがだめでした。
YuriY

2018/12/05 03:56

結局 'lang' => 'ja' 'lang' => 'en_EN' を追加することで言語を切り替えることができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問