2012-12-24 51 views
0

我使用的是wordpress php widget,但我無法處理WordPress的短代碼 - PHP只是呈現短代碼而不是處理它。這裏是我做過什麼WordPress的PHP部件

  1. 添加過濾器,以我的活動主題function.php文件

    add_filter('widget_text', 'shortcode_unautop'); 
    add_filter('widget_text', 'do_shortcode'); 
    
    // Allow shortcodes in php code widget 
    add_filter('widget_execphp', 'shortcode_unautop'); 
    add_filter('widget_execphp', 'do_shortcode'); 
    
  2. 添加以下到PHP部件

    <?php 
    $id = get_the_ID(); 
    $amazon_product_asin_value = get_post_meta($id, 'amazon_product_asin', true); 
        echo do_shortcode('<div> [amazon asin=' . $amazon_product_asin_value . '&template=buynowamazon_widget&chan=default] </div>'); 
    ?> 
    

我也嘗試過沒有do_shortcode和相同的結果。

2正確輸出的

[amazon asin=B008I20FT8&template=buynowamazon_widget&chan=default] 

短碼,如果我只是在標準文本組件

我使用亞馬遜的鏈接插件,它產生的簡碼輸入該工作正常

有任何想法嗎?

回答

0

asin參數值可能會混淆短代碼處理器;嘗試在它周圍引號。

echo do_shortcode('<div> [amazon asin="' . $amazon_product_asin_value . '&template=buynowamazon_widget&chan=default"] </div>'); 

或者,短代碼是否將該參數的每個參數作爲單獨參數接受?

echo do_shortcode('<div> [amazon asin="' . $amazon_product_asin_value . '" template="buynowamazon_widget" chan="default"] </div>'); 

編輯:縱觀插件的代碼,我不認爲你需要這些行:

add_filter('widget_execphp', 'shortcode_unautop'); 
add_filter('widget_execphp', 'do_shortcode'); 

他們會嘗試處理短代碼,執行PHP之前,這樣的話你贏了沒有正確處理短代碼。將它們評論一下,看看現在插件的功能。

+0

不幸的是,這並沒有奏效。相同的結果 - 不處理簡碼。 – Jay

+0

@Jay我有一個類似的問題,我嘗試使用兩個不同的php小部件,並在小部件中放置了do_shortcode()。由於某些原因,單引號和雙引號沒有正確解析。嘗試從函數中刪除引號 – Anagio