Point-1: 不清楚你在哪里$order_id
从…起我想是在Shortcode
.
Point-2: 你不需要这么做。使用ob_*
返回函数Shortcode
替换内容,只需返回即可。
假设代码的其他部分正确,下面是可能的代码:
如果在主题的functions.php
文件:
/**
* Add Shortcode
*/
function tracking_shortcode( $attrs ) {
$attrs = shortcode_atts( array(
\'order_id\' => \'\'
), $attrs );
if( empty( $attrs[\'order_id\'] ) ) return \'\';
$order = new WC_Order( $attrs[\'order_id\'] );
// I\'ve followed your code, but may be even the above line is not needed.
// may be you can just use $attrs[\'order_id\'] directly to get tracking code
return get_post_meta( $order->id, \'_shipping_tracking_code\', true );
}
add_shortcode( \'tracking_code\', \'tracking_shortcode\' );
如果使用插件实现短代码:
/**
* Add Shortcode
*/
function tracking_shortcode( $attrs ) {
$attrs = shortcode_atts( array(
\'order_id\' => \'\'
), $attrs );
if( empty( $attrs[\'order_id\'] ) ) return \'\';
$order = new WC_Order( $attrs[\'order_id\'] );
return get_post_meta( $order->id, \'_shipping_tracking_code\', true );
}
/**
* Initiate Shortcode
*/
function tracking_shortcode_init()
{
add_shortcode( \'tracking_code\', \'tracking_shortcode\' );
}
add_action(\'init\', \'tracking_shortcode_init\');
了解更多信息
shortcode
从…起
WordPress doc.