web-dev-qa-db-ja.com

do_shortcodeが機能しない

私はしばらくこれに固執しています。私はテーマを最初から書いたwordpressサイトで作業しています。php呼び出しを使用して、特定のセクションで必要なwordpress機能を取得します。

プラグインを使おうとしていますが、

echo do_shortcode('[STORE-LOCATOR]');

ただ機能していません。デフォルトのテンプレートに切り替えてそのコードを投稿しても、機能しません。単に"[STORE-LOCATOR]"をエコーし​​ます

どんな助けでも大歓迎です。

14
sjobe

[STORE-LOCATOR]はおそらくWordPressの意味で 'shortcode'ではありません。

私は別のプラグイン、ストリームメディアプレーヤーでこれに遭遇しました。ショートコードと同じ構文を使用しますが、実際にはそうではありません。

使用してみてください:

echo apply_filters( 'the_content',' [STORE-LOCATOR] ');

の代わりに do_shortcode、そしてそれが役立つかどうかを確認します。

43
birdsonwire

do_shortcode()は文字列を返します。私はそれを次のようにすることで機能させます:

<?php echo do_shortcode(...); ?>
17
ggzone

これはStoreLocatorプラグインに固有であり、一般に_do_shortcode_ではありません。

_apply_filters_は、他のプラグインでは許容できる回避策ですが、StoreLocatorでは機能しません。空のスペースといくつかのコントロールのみが表示されます。これは、ページ/投稿の本文でそのショートコードを探して、ページの上部にすべてのjs参照を含めるかどうかを決定するためです。そして、これらの参照がなければ、何も機能しません。 sl-functions.phpの_sl_head_scripts_関数を参照してください。

この動作を変更するには、代わりにページタイトルに基づいて一致するようにその関数を変更するだけです。私の例では、「ショップ」ページでのみ必要だったので、_$on_sl_page_テスト全体をコメントアウトして、次のように置き換えました。

$on_sl_page = ( strpos($pagename, 'shop') === 0 );

次に、他の回答に示されているように、apply_filtersを使用して自分のページから呼び出しました。

echo apply_filters( 'the_content','[STORE-LOCATOR]');

そして、これは完全に機能しているように見えます。

2
gbanks
echo do_shortcode('[STORE-LOCATOR][/STORE-LOCATOR]');
0
Fabio

すべてを最初から作成する場合は、作成する関数がプラグインのルートphpファイルにあることを確認する必要があります。関数は次のようになりますが、ストアの場所に到達するために使用しているロジックをサブインする必要があります。

<?php
function doCoolStuff () {
$var1 = "value1";
$var2 = "value2";
$output = $var1+$var2;
}
return $output;
}
add_shortcode('SOTRE-LOCATIOR', 'doCoolStuff');
?>

次に、テンプレートにコードを入力します。

<?php echo do_shortcode('[STORE-LOCATOR]');?>

幸せなコーディングと幸運を!