如何从插件中的变量创建简码
how to create a shortcode from a variable in plugin
我正在使用 WP User Frontend Pro 插件
我想使用简码来呼应包装标题,将其放入面包店视觉效果中。
我所知道的是:这是标题 $pack->post_title;
$pack 来自这里:
public function current_pack() {
global $pack;
$pack = $this->pack;
if ( ! isset( $this->pack['pack_id'] ) ) {
$pack_page = get_permalink( wpuf_get_option( 'subscription_page', 'wpuf_payment' ) );
return new WP_Error( 'no-pack', sprintf( __( 'You must <a href="%s">purchase a subscription package</a> before posting', 'wp-user-frontend'), $pack_page ) );
}
// seems like the user has a pack, now check expiration
if ( $this->expired() ) {
return new WP_Error( 'expired', __( 'The subscription pack has expired. Please buy a pack.', 'wp-user-frontend' ) );
}
return $pack;
}
我试着做这样的事情:
function wpc_shortcode_pack_title() {
global $pack;
return $pack->post_title;
}
add_shortcode( 'sub_name', 'wpc_shortcode_pack_title' );
解释更多
第 5 行中选择的代码在插件页面中正常工作
但我想要它作为简码
但是没用
有什么帮助吗?
add_shortcode()
的回调函数应该是return内容,而不是打印
意思是,你必须 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
似乎是通过订阅 ID 从 WPUF_Subscription::get_subscription()
获取它的值,这基本上是用那个 ID 获取 post。
订阅 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' );
我正在使用 WP User Frontend Pro 插件 我想使用简码来呼应包装标题,将其放入面包店视觉效果中。 我所知道的是:这是标题 $pack->post_title;
$pack 来自这里:
public function current_pack() {
global $pack;
$pack = $this->pack;
if ( ! isset( $this->pack['pack_id'] ) ) {
$pack_page = get_permalink( wpuf_get_option( 'subscription_page', 'wpuf_payment' ) );
return new WP_Error( 'no-pack', sprintf( __( 'You must <a href="%s">purchase a subscription package</a> before posting', 'wp-user-frontend'), $pack_page ) );
}
// seems like the user has a pack, now check expiration
if ( $this->expired() ) {
return new WP_Error( 'expired', __( 'The subscription pack has expired. Please buy a pack.', 'wp-user-frontend' ) );
}
return $pack;
}
我试着做这样的事情:
function wpc_shortcode_pack_title() {
global $pack;
return $pack->post_title;
}
add_shortcode( 'sub_name', 'wpc_shortcode_pack_title' );
解释更多
第 5 行中选择的代码在插件页面中正常工作
但我想要它作为简码
但是没用 有什么帮助吗?
add_shortcode()
的回调函数应该是return内容,而不是打印
意思是,你必须 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
似乎是通过订阅 ID 从 WPUF_Subscription::get_subscription()
获取它的值,这基本上是用那个 ID 获取 post。
订阅 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' );