2016-12-05 10 views
1

ここでPHP初心者.........WPショートコードに変数を渡す - イベントマネージャープラグイン

この素晴らしいコミュニティが見つかりました。

私はWPプラグインEvents Managerを使用してサイトを作成しています。

プラグインは、変数とプレースホルダを使用してイベントのリストを生成することができる「すぐに使える」ショートコードを提供します。例えば:私がやりたい何

[events_list tag="Theatre"&state="Brussels"&scope="tomorrow"] 
#_EVENTLINK - at #_LOCATIONLINK on #_EVENTDATES at #_EVENTTIMES 
[/events_list] 

は、前のページから提出され、複数のドロップダウンメニューを介してオプションのユーザー選択された用語で、このショートの変数(スコープ、状態、タグなど)を取り込むことです。

mysite.com/?page_id=1001&tag=Theatre&state=Brussels&scope=tomorrow 

私の質問はあるが、誰もが私が取得する方法を提案することができます:私は取っていたアプローチには、例えば、ショートしてページにユーザーをとり、メニューの選択が提出されたURLを、生成することです変数をURLからショートコードに変更することで、ショートコードを自動的に駆動して、ユーザーの変化する選択に従って必要なイベントリストを生成します。私は、このような

<?php 
echo htmlspecialchars($_GET["scope"]); 
?> 

として(挿入プラグインを介して)PHPスニペットを使用して試みたが、ネストされたショートコードの再問題、またはWordpressのページでPHPを実行している他の競合に実行されているように見えるています。

どのような方向性があるかについてのヒントは大変ありがとう!

答えて

0

あなたはこのような何かを行うことができます:

とクエリ文字列を取得:echo do_shortcode('[events_list tag="' . $awQueryStringParams['tag'] . '" state="' . $awQueryStringParams['state'] . '" scope="' . $awQueryStringParams['scope'] . '"]');

:その後、 parse_str($awQueryString, $awQueryStringParams);

そして、このようなあなたのショートをエコー:$awQueryString = $_SERVER['QUERY_STRING'];

を持つクエリ文字列を解析

完全なスニペットは次のようになります。

<?php 
    $awQueryString = $_SERVER['QUERY_STRING']; 
    parse_str($awQueryString, $awQueryStringParams); 
    echo do_shortcode('[events_list tag="' . $awQueryStringParams['tag'] . '" state="' . $awQueryStringParams['state'] . '" scope="' . $awQueryStringParams['scope'] . '"]'); 
?> 

なぜ私はわかりませんが、私の開発サイトでこれをテストすると、実際のクエリ文字列パラメータtagを使用しようとしたときに404が表示されます。これは私の環境/サイトのローカルなものかもしれませんが、このソリューションを使用して404を取得した場合は、tag QSPと関係がある可能性があります。クエリ文字列が存在するかどうかの確認について、あなたのコメントへの応答で

編集:

<?php 
    $awQueryString = $_SERVER['QUERY_STRING']; 
    parse_str($awQueryString, $awQueryStringParams); 
    if (empty($awQueryString)) { 
     echo 'No Results'; 
    } else { 
     echo do_shortcode('[events_list tag="' . $awQueryStringParams['tag'] . '" state="' . $awQueryStringParams['state'] . '" scope="' . $awQueryStringParams['scope'] . '"]'); 
    } 
?> 
+1

アンディこれはちょうどあなたがMANありますperfect-!文字列パラメータ 'tag'をショートコードに沿って' what'に変更しました。これは夢のように動作します。多くの、多くのありがとう.... – inthebluesky

+0

素晴らしい、あなたのために働いて聞いてうれしい! – AndyWarren

+1

URLにクエリ文字列がない場合、ショートコードがトリガーされないようにするにはどうすればよいですか?質問がなくても(おそらく好奇心を抱くユーザーが...)、mysite.com/?page_id = 1001というページに行くと、過去と現在のすべてのイベントが生成されるからです。私は 'if(isset($ the_var)){ echo" No results "のようなものを手にしています。 } else { //元の優秀なコード } 'しかし、今は役に立たない! – inthebluesky

関連する問題