如何在WordPress中获取短代码参数值?

时间:2013-06-24 09:19:43

标签: wordpress wordpress-plugin woocommerce

[amazon_s3 bucket=my_bucket_name object=my_file_name.ext]

大家好我需要知道如何获取上述短代码中的参数值。例如:对象是属性,那么我如何获取对象值my_file_name.ext。我正在使用woocommerce s3插件。我不确定我是否定制了woocommerce以获取我的帐户页面中的文件名显示这里是代码。

 function filename_wc_downloads( $link, $download )
    {
           $order = new WC_Order( $download['order_id'] );
        $download_file_urls = $order->get_downloadable_file_urls( 
            $download['product_id'], 
            null, 
            $download['download_id'] 
        );

        foreach( $download_file_urls as $key => $value )
        {
            if( $value == $download['download_url'] )
            {
                $url_parts = explode( '/', parse_url( $key, PHP_URL_PATH ) );
                $file_name = end( $url_parts );
                $link = '<a href="' 
                    . esc_url( $download['download_url'] ) 
                    . '">' 
                    . $download['download_name'] 
                    . '</a> <small>( ' 
                    . $file_name 
                    . ' )</small>';
            }               
        }
        return $link;
    }

在Woocommerce中,所有产品都会上传到上传文件夹的媒体库中。上面的代码是如果他们使用直接文件路径,则在我的帐户页面中获取文件名show。如果我在产品网址中粘贴了上述短代码,则上述代码无法获取文件名。所以我需要从短代码知道如何获得基于此的对象值来显示文件名。

1 个答案:

答案 0 :(得分:1)

amazon_s3是包含$ atts bucket和object

的短代码

当你使用wordpress函数add_shortcode('amazon_s3','your_function_name');

它会自动将[amazan_s3 ....中定义的属性转换为$ atts

e.g。

function your_funnction_name($atts) {
    extract(shortcode_atts(array(
        'bucket' => '',
        'object' => ''
    ), $atts));

   return $object;
}