是否使用变量(WooCommerce)创建短码?

时间:2019-08-19 作者:Maria

我是PHP新手。我想创建一个输出用户订单号的快捷码,但我遇到了麻烦。

我只知道order ID变量是“$order->get\\u ID();”

1 个回复
SO网友:Rudy Lister

需要知道您计划如何使用此快捷码,因为如果用户有多个订单,那么按照您的要求执行操作会引发您希望该快捷码执行什么操作的问题?

如果此短代码将显示在特定于特定顺序的页面或帖子上,则可以按如下方式创建短代码:

以下两个函数应位于主题函数中。php文件或在插件主php文件中。

这将注册您的短代码:

function register_my_shortcode() {
add_shortcode( \'get_current_order_number\', \'get_current_order_number_callback\' ) );
}
add_action( \'init\', \'register_my_shortcode\', 10 );
这是一个函数回调,它构建了您想要对短代码执行的操作:

function get_current_order_number_callback( $atts ) {
// This is where you can get your order number.
global $post;
$order = new WC_Order($post->ID);
$output = \'\';

// Good to do a check that the order number is not empty.
if ( ! empty( $order->get_order_number() ) ) :
// This is where you can declare attributes that you can add in your shortcode.
$atts = shortcode_atts( array(
        \'id\' => \'default-id\',
        \'container_class\' => \'default-container-class\',
        \'class\' => \'default-class\',
    ), $atts );

// Now you can build the elements that you want to display the order number in.
$output .= \'<div class="\' . $atts[\'container_class\'] . \'">;
$output .= \'<span id="\' . $atts[\'id\'] . \'" class="\' . $atts[\'class\'] . \'">\' . $order->get_order_number() . \'</span>\';
$output .= \'</div>\';

// If order number is not empty will return your shortcode build above.
return $output;

endif;

// If order number is empty will return false.
return false;
}
您的短代码如下所示,如果没有ATT,将使用默认值:

[get_current_order_number]
或添加ATT:

[get_current_order_number id="43" container_class="custom-container" class="order-number-text"]

相关推荐

Do not parse shortcode in CPT

我有一个CPT,我不想在它的内容中解析shortcode(使用\\u content()函数)。我可以使用remove\\u filter删除短代码的默认过滤器。但我如何确定我只是为了我想要的CPT而删除过滤器?我有一个在页面中使用的快捷码[我的自定义快捷码]。此短代码使用WP\\U查询和输出CPT帖子。我不想在这篇CPT文章中分析短代码。我是否应该在短代码解析挂钩之前用虚拟内容更改短代码,并在之后替换回来?或者我应该在我的CPT输出之前删除短代码的默认过滤器,然后在我的CPT输出完成后再次添加短代码的默