0

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]

これを標準のテキストウィジェットに入力するだけでうまくいきます

ショートコードを生成する Amazon Link プラグインを使用しています

何か案は?

4

1 に答える 1

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 が実行される前にショートコードを処理しようとするため、ショートコードが正しく処理されません。それらをコメントアウトして、プラグインが現在何をしているかを確認してください。

于 2012-12-25T01:22:02.700 に答える