为了账号安全,请及时绑定邮箱和手机立即绑定

如何从插件中的变量创建简码

如何从插件中的变量创建简码

PHP
手掌心 2022-12-23 13:10:43
我正在使用 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 行中的选定代码在插件页面中正常工作,但我希望它作为简码但它没有任何帮助吗?
查看完整描述

1 回答

?
慕标5832272

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' );


查看完整回答
反对 回复 2022-12-23
  • 1 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信