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 关注
- 76 浏览
添加回答
举报