質問の仕方が悪かったような気がしましたので、補足です。
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;
}
}
}
コード全体としては以下の様な形になりますでしょうか?
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;」で処理が終了してしまっているのではないかなと思います。
hideokamotoさん、ご返信誠にありがとございます。
コード全体としましては、トピックの最初に記しました通り、$user_term->name を return しないで、
$msg_body .= "所属:" .$user_term->name. "\r\n";
で取得できないのかな…と思っています。
(トピックの最初では .= が = になっていますが、これはミスタイプです)
私のコードの書き方が間違っているのでしょうか。
よろしくお願いいたします。
Codexを再度見ながら試行錯誤して分かったのですが、
$taxonomy が存在しなければ WP_Error
が返っているようです。
fonctions.php内では、wp_get_object_terms() でタクソノミーを取得することが出来ないのでしょうか。
もしくはタクソノミーによるユーザーのグルーピングをプラグインで行っているためでしょうか。
$user_termsにWP_Errorが返ってきているということでしたら、
echo $user_terms->get_error_message();
の様な形でエラーメッセージを見てみるとなにかヒントがあるかもしれません。
hideokamotoさん、お世話になります。
return $user_terms->get_error_message();
として確認してみましたら、「不正なタクソノミー分類です。」と返ってきます。
しかしこれでは、よくわからないですね…。
もう少し掘り下げて調べる方法はございますか?
返り値がエラーになっていますので、一度投稿自体が取得できているのかを確認されてみると良いかもです。
$user_terms = wp_get_object_terms( $user_id);
これでエラーがWP_Errorが返ってこないようでしたら、
タクソノミー名( ‘user-group’)に問題がある可能性があります。
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’ )は、他のテンプレートなどでは正常に取得できているのですが…。