2013-06-24 15 views
0
[amazon_s3 bucket=my_bucket_name object=my_file_name.ext] 

大家好,我需要知道如何獲取上述短代碼中的參數值。例如:對象是屬性,那麼我如何獲取對象值my_file_name.ext。我正在使用woocommerce s3插件。我不確定我是否定製了woocommerce以獲取文件名顯示在我的帳戶頁面中,這裏是代碼。如何在WordPress中獲取簡碼參數值?

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中,所有產品都上傳到上傳文件夾的媒體庫中。上面的代碼是如果他們使用直接文件路徑,則在我的帳戶頁面中獲取文件名顯示。如果我在產品網址中粘貼上面的短代碼,上面的代碼無法獲取文件名。所以我需要從短代碼中知道如何獲得基於此的對象值來顯示文件名。

回答

1

amazon_s3是含$的ATT桶和對象的簡碼

當您使用WordPress的功能add_shortcode( 'amazon_s3', 'your_function_name')

;

它會自動在[amazan_s3定義你的屬性....轉換爲$的ATT

例如

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

    return $object; 
}