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

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

ただいまの
回答率

89.13%

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 663

YuriY

score 23

無限スクロールの実行に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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Space-Monkey

    2018/12/02 17:44

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

    キャンセル

  • YuriY

    2018/12/03 11:38

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

    キャンセル

回答 2

check解決した方法

0

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

を追加することで

切り分けられました。

結局、

'suppress_filters' => false,

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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


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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/03 18: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 20:01

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

    キャンセル

  • 2018/12/04 15: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,
    )
    ),
    );

    これも試しましたがだめでした。

    キャンセル

  • 2018/12/05 12:56

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

    キャンセル

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

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる