1

私は Cart66 Wordpress プラグインを使用しており、ショートコードに変数を含めようとしています。以下のコードを参照してください。

$price = do_shortcode('[add_to_cart item="test-item" showprice="only" text=""]').' test';
echo do_shortcode('[add_to_cart item="test-item" showprice="no" quantity="1" text="'.$price.'" ]');

私はグーグルで調べましたが、どうやらこれはWordpressのショートコードに変数を含める正しい方法ですが、これは私にはうまくいかないようです.Cart66はフォールバックし、テキストの代わりにデフォルトの「カートに追加」テキストを使用します上記のショートコードで定義されています。

ここで私が間違っているところを誰かが見ることができますか?

4

4 に答える 4

2

ショートコードにテキストを追加するためにグーグルで検索したので、正しいですが完全に正しいわけではありません。

ショートコード機能を置き換え、その機能をフロントエンドに表示するために使用される「do_shortcode()」関数を使用しました。ただし、ショートコードにパラメーターを追加して機能させたい場合は、ショートコードの機能を少し変更する必要があります。

ショートコードの機能を含むファイルでショートコードを見つける必要があります。

以下のようなコードを見つけます。
add_shortcode('add_to_cart','function_name');
function function_name($atts)
{
$atts //-- will be used to add parameters as you needed
}

于 2013-07-02T17:30:12.577 に答える
0

問題を引き起こしている戻り値にいくつかの奇妙な文字があったと思います。以下の式コードを使用しましたが、問題が解決したようです。

$value = substr(do_shortcode('[add_to_cart item="test-item" showprice="only" text=""]'), 0, 4).' Test';
$patterns = array();
$patterns[0] = '/"/';
$replacements = array();
$replacements[2] = ' ';
$value = preg_replace($patterns, $replacements, html_entity_decode($price, ENT_QUOTES));
echo do_shortcode('[add_to_cart item="test-item" showprice="no" quantity="1" text="'.$price.'" ]');

言うまでもなく、これは非常に複雑なソリューションでした。Wordpresses WPDB classを利用して、古き良きSQLを使用することになりました。約 7 行のコードを 2 行にすると:

$priceValue = $wpdb->get_var("SELECT price FROM wp_cart66_products WHERE id = x");
echo do_shortcode('[add_to_cart item="test-item" showprice="no" quantity="1" text="£'.$priceValue.' Membership" ]');

これははるかに優れた解決策です。ショートコードを使用する予定のないものにショートコードを使用しようとすることはお勧めしません。

于 2013-07-09T11:54:38.300 に答える