サポート » 使い方全般 » フィルターフックの出力の仕方を教えてください

  • いつもお世話になります。

    下記フィルターフックは、プラグインWelcartのサンキューメールのフックを利用しているのですが、$user_term->name がメールに出力されません。
    他は表示されているのですが、どうすれば $user_term->name が表示されるようになるのか分からず困っております。
    何卒ご教示のほど、よろしくお願いいたします。

    add_filter( 'usces_filter_send_order_mail_bodyall', 'my_filter_send_order_mail_bodyall', 10, 2 );
    function my_filter_send_order_mail_bodyall( $msg_body, $data ) {
    	//ログインユーザー取得
    	$user = wp_get_current_user();
    	//ログインユーザーIDを変数に格納
    	$user_id = get_current_user_id();
    	//ユーザーターム取得
    	$user_terms = wp_get_object_terms( $user_id, 'user-group' );
    	if( !empty( $user_terms ) ) {
    		if( !is_wp_error( $user_terms ) ) {
    			foreach( $user_terms as $user_term ) {
    			}
    		}
    	}
    	$msg_body .= "メールアドレス:" .$user->get('user_email'). "\r\n";
    	$msg_body .= "お名前    :" .$user->get('display_name'). " 様\r\n";
    	$msg_body = "所属:" .$user_term->name. "\r\n";
    	return $msg_body;
    }
8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック投稿者 JunichiK

    (@junichik)

    質問の仕方が悪かったような気がしましたので、補足です。
    wp_get_object_terms() にて、下記コードで取得した $user_term を、フィルターフック内で使用して返したいのですが、うまく反映されません。
    どのようにすれば反映されるようになるのか、試行錯誤しておりますが分かりません。
    何卒ご教示くださいますよう、お願い申し上げます。

    $user_terms = wp_get_object_terms( $user_id, 'user-group' );
    	if( !empty( $user_terms ) ) {
    		if( !is_wp_error( $user_terms ) ) {
    			foreach( $user_terms as $user_term ) {
                	return $user_term->name;
    			}
    		}
    	}
    モデレーター Okamoto Hidetaka

    (@hideokamoto)

    コード全体としては以下の様な形になりますでしょうか?

    add_filter( 'usces_filter_send_order_mail_bodyall', 'my_filter_send_order_mail_bodyall', 10, 2 );
    function my_filter_send_order_mail_bodyall( $msg_body, $data ) {
    	//ログインユーザー取得
    	$user = wp_get_current_user();
    	//ログインユーザーIDを変数に格納
    	$user_id = get_current_user_id();
    	//ユーザーターム取得
    	$user_terms = wp_get_object_terms( $user_id, 'user-group' );
    	if( !empty( $user_terms ) ) {
    		if( !is_wp_error( $user_terms ) ) {
    			foreach( $user_terms as $user_term ) {
                	return $user_term->name;
    			}
    		}
    	}
    	$msg_body .= "メールアドレス:" .$user->get('user_email'). "\r\n";
    	$msg_body .= "お名前    :" .$user->get('display_name'). " 様\r\n";
    	$msg_body = "所属:" .$user_term->name. "\r\n";
    	return $msg_body;
    }

    もしこの形であれば、「return $user_term->name;」で処理が終了してしまっているのではないかなと思います。

    トピック投稿者 JunichiK

    (@junichik)

    hideokamotoさん、ご返信誠にありがとございます。

    コード全体としましては、トピックの最初に記しました通り、$user_term->name を return しないで、
    $msg_body .= "所属:" .$user_term->name. "\r\n";
    で取得できないのかな…と思っています。
    (トピックの最初では .= が = になっていますが、これはミスタイプです)
    私のコードの書き方が間違っているのでしょうか。
    よろしくお願いいたします。

    トピック投稿者 JunichiK

    (@junichik)

    Codexを再度見ながら試行錯誤して分かったのですが、

    $taxonomy が存在しなければ WP_Error

    が返っているようです。
    fonctions.php内では、wp_get_object_terms() でタクソノミーを取得することが出来ないのでしょうか。
    もしくはタクソノミーによるユーザーのグルーピングをプラグインで行っているためでしょうか。

    モデレーター Okamoto Hidetaka

    (@hideokamoto)

    $user_termsにWP_Errorが返ってきているということでしたら、

    echo $user_terms->get_error_message();

    の様な形でエラーメッセージを見てみるとなにかヒントがあるかもしれません。

    トピック投稿者 JunichiK

    (@junichik)

    hideokamotoさん、お世話になります。

    return $user_terms->get_error_message();
    として確認してみましたら、「不正なタクソノミー分類です。」と返ってきます。
    しかしこれでは、よくわからないですね…。
    もう少し掘り下げて調べる方法はございますか?

    モデレーター Okamoto Hidetaka

    (@hideokamoto)

    返り値がエラーになっていますので、一度投稿自体が取得できているのかを確認されてみると良いかもです。

    $user_terms = wp_get_object_terms( $user_id);

    これでエラーがWP_Errorが返ってこないようでしたら、

    タクソノミー名( ‘user-group’)に問題がある可能性があります。

    トピック投稿者 JunichiK

    (@junichik)

    hideokamotoさん、ありがとうございます。

    上記ご提案通り、

    $user_id = get_current_user_id();
    $user_terms = wp_get_object_terms( $user_id );
    if( !empty( $user_terms ) ) {
    	if( !is_wp_error( $user_terms ) ) {
    	return $user_id;
    	}
    	return $user_terms->get_error_message();
    }

    として試してみますと、return $user_id; も return $user_terms->get_error_message(); も空白となりました。
    「不正なタクソノミー分類です。」ではないですが、WP_Error が返ってきているということになりますね…。
    タクソノミー名( ‘user-group’ )は、他のテンプレートなどでは正常に取得できているのですが…。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「フィルターフックの出力の仕方を教えてください」には新たに返信することはできません。