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

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

#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の仕様通り?)の動きをしています。

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

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