1 回答

TA貢獻1966條經驗 獲得超4個贊
的回調函數add_shortcode()應該返回內容,而不是打印出來。
意思是,你必須return $pack->post_title代替echo $pack->post_title.
像這樣:
function wpc_shortcode_pack_title() {
global $pack;
return $pack->post_title;
}
add_shortcode( 'sub_name', 'wpc_shortcode_pack_title' );
編輯:查看“WP User Frontend Pro”的來源后:
$pack似乎WPUF_Subscription::get_subscription()通過傳遞訂閱 ID 獲得了它的價值,訂閱 ID 基本上獲得了具有該 ID 的帖子。
訂閱 ID 似乎是WPUF_Subscription::get_user_pack()通過傳遞用戶 ID 來獲取其價值的。
所以,我想你可以打電話get_current_user_id()嘗試這樣的事情:
function wpc_shortcode_pack_title() {
$user_id = get_current_user_id();
if ( ! class_exists( 'WPUF_Subscription' ) ) {
return 'WP User Frontend Pro is not installed/activated';
}
$user_sub = WPUF_Subscription::get_user_pack( $user_id );
$pack = WPUF_Subscription::get_subscription( $user_sub['pack_id'] );
return $pack->post_title;
}
add_shortcode( 'sub_name', 'wpc_shortcode_pack_title' );
編輯#2:要獲得過期日期,你會做類似的事情:
function wpc_shortcode_pack_title() {
$user_id = get_current_user_id();
if ( ! class_exists( 'WPUF_Subscription' ) ) {
return 'WP User Frontend Pro is not installed/activated';
}
// Get WPUF subscription/pack
$user_sub = WPUF_Subscription::get_user_pack( $user_id );
$pack = WPUF_Subscription::get_subscription( $user_sub['pack_id'] );
// Get expiration date
$expire = ( $user_sub['expire'] == 'unlimited' ) ? ucfirst( 'unlimited' ) : wpuf_date2mysql( $user_sub['expire'] );
return sprintf(
'Subscription name: %1$s | Expire date: %2$s',
$pack->post_title,
wpuf_get_date( $expire )
);
}
add_shortcode( 'sub_name', 'wpc_shortcode_pack_title' );
- 1 回答
- 0 關注
- 99 瀏覽
添加回答
舉報