[解決済み] Welcart ウィジェットのフィルタで $post が取得できない

ホーム フォーラム バグ報告 [解決済み] Welcart ウィジェットのフィルタで $post が取得できない

このトピックには4件の返信が含まれ、2人の参加者がいます。7 年、 1 ヶ月前 chatii さんが最後の更新を行いました。

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #50467

    chatii
    参加者

    お世話になります。

    フィルタを知ってから、できることの幅が広がって

    よりWelcartを楽しんでいる chatii です。

    タイトルの通りですが、

    Welcart ポスト ウィジェットの出力を

    フィルタでカスタマイズしようとしたところ、

    $post が null となってしまいます。

    functions/template_func.php:1417

    function usces_list_post 内に、

    global $post;

    が足りていないようです。(…あまり自信ないですが

    他のフィルタについては確認していません。

    動作に関するご質問の場合は必ずご記入ください。


    Welcart のバージョン:1.0.3

    症状を確認したブラウザ:

    サーバー(会社名、サービス名):

    SSLの利用: 無し | 専用SSL | 共用SSL

    WordPress のパーマリンク設定:


    #62182

    nanbu
    参加者

    こんにちは。

    $post は取得できております。

    add_filter の第4引数は指定されていますでしょうか。

    #62183

    chatii
    参加者

    nanbu さま

    返信ありがとうございます。

    add_filter("usces_filter_widget_post", "hogehoge_widget_post", 10, 3);

    こんな具合です。

    apply_filters( 'usces_filter_widget_post', $list, $post, $slug);

    とあるので、渡されるのは3個…ですよね

    念のため確認ですが、ここで渡す $post は

    $infolist->the_post();

    の記事ですよね?

    function hogehoge_widget_post() {
    $args = func_get_args();
    list($list, $post, $slug) = $args;
    var_dump($post);
    }

    こんなことすると、var_dumpの結果がnull になります。

    独自のフィルタ内で、

    global $post;

    してやれば取得はでき、ちゃんと動きますが…

    $infolist->the_post() の後、

    $post = $infolist->post; // ローカル変数として

    あるいは apply_filters を

    $li .= apply_filters( 'usces_filter_widget_post', $list, $infolist->post, $slug);

    あるいは、前回の書込通り、usces_list_post() 内で

    global $post; // グローバルを使う

    することで、期待通り(usces_filter_widget_postの仕様通り?)の動きをしています。

    フィルタフックが渡してくれる(はず)なら、

    そちらを使うべきだろうと思うので…

    #62184

    nanbu
    参加者

    すみません、chatii さん。こちらの勘違いでした。

    仰るとおり、変数は渡っていませんでした。

    usces_list_post()の冒頭を、global $usces, $post;に変更いたしました。

    Development Version に修正が上がっています。

    ご報告ありがとうございました。

    #62185

    chatii
    参加者

    nanbu さま

    ご対応ありがとうございます!

    お手数お掛けしました。

    今後ともよろしくお願いします

5件の投稿を表示中 - 1 - 5件目 (全5件中)

このトピックに返信するにはログインが必要です。