1

メンバーが有効期限を設定していれば、メンバーがメンバーディレクトリに表示される広告を投稿できるbuddypressサイトで作業しています。どちらのフィールドも単なる拡張プロファイルフィールドです。広告はテキスト領域であり、有効期限はもちろん日付ピッカーです。

私のテーマでは、members-loop.phpループ内に、次のコードがあります。

// This one works
<?php $ad = bp_get_member_profile_data('field=Member Directory Ad'); ?>
// This one doesn't
<?php $ad_expiry = bp_get_member_profile_data('field=Member Directory Ad Expiration'); ?>

これを実現するための特別なコードは他にありません。特に$adの値が正しい場合、$ad_expiryが確実に設定されているメンバーにとって$ad_expiryが空白である理由はわかりません。

buddypressコードを掘り下げてみると、拡張プロファイルの日付ボックスデータがbp_get_member_profile_data()によって返されていません。xprofile_format_profile_field()内では、値はbp_format_time()によって「フォーマット」されており、出力は空です。だから私はそれがbuddypressのバグだと思います。

4

2 に答える 2

2

少なくともバグはわかった。BuddyPressは、日付ボックスの出力を「2012-07-1900:00:00」のような文字列として保存します。bp_get_member_profile_data()は、データベースからそれを取得し、それをxprofile_format_profile_field()に渡します。xprofile_format_profile_field()は、値がis_numeric()チェックに失敗したため、falseを返します。

于 2012-07-19T16:43:22.893 に答える
1

この回避策を試してください-

  //you need to specify the $user_id
$ad_expiry = xprofile_get_field_data('Member Directory Ad Expiration', $user_id );  
  // reformat, if you like
$ad_expiry  = strtotime($ad_expiry);
echo date('m/d/Y', $ad_expiry); 

そして、tracのバグレポートに感謝します。

于 2012-07-21T20:12:43.763 に答える