2016-09-27 14 views
2

私のWordPressページでは、投稿のURLからパラメータを取得するショートコード関数を作成しました。だから、私はこの簡単な関数を作成し、Wordpressはパラメータを送信するショートコードを追加します

function getParam($param) { 
    if ($param !== null && $param !== '') { 
    echo $param; 
    } else { 
    echo "Success"; 
    } 
} 

add_shortcode('myFunc', 'getParam'); 

function.phpテーマのファイルに次のコードを追加したと私は[myFunc param='']

(私の場合)を使用して、投稿やページへのこのショートを追加する必要があります知っています

通常、私は<?php $_GET['param'] ?>を使用してURLからパラメータの値を取得しますが、この場合、このPHPコードをショートコード関数に送る方法はわかりません。

function getParam($arg) { 

    if (isset($arg) && array_key_exists('param', $arg) && $arg['param'] != '') 
    { 
     return $_GET[$arg['param']]; // OR get_query_var($arg['param']); 
    } 
    else 
     return "Success"; 
} 

add_shortcode('name', 'getParam'); 
+0

あなたは[myFuncというのparam = $ _ GET [ 'のparam']] ''しようとした消毒 - 作成するショートコード

https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Dataのチュートリアル? '$ _GET'はグローバル変数です。 –

+0

@Dimentica:$ param varは配列で、$ param ['param']にアクセスできます。 –

+0

@Dimentica:***を使用してください***返信***代わりに***エコー***。 –

答えて

1

このようなショートコード:

http://example.com?param=thisparam 

取得するには:と呼ばれるparamは、あなたがこのURLを持っているとしましょう記事で

を変更されない限り

[myFunc funcparam="param"] 

が、ここでは必要ありません上記のショートコードをfunctions.phpで使用することによって 'param'の値は次のようになります:

function sc_getParam() { 

    // get parameter(s) from the shortcode 
    extract(shortcode_atts(array(
     "funcparam" => 'funcparam', 
    ), $atts)); 

    // check whether the parameter is not empty AND if there is 
    // something in the $_GET[] 
    if ($funcparam != '' && isset($_GET[ $funcparam ])) { 

     // sanitizing - this is for protection! 
     $thisparam = sanitize_text_field($_GET[ $funcparam ]); 

     // returning the value from the $_GET[], sanitized! 
     return $thisparam; 

    } else { 

     // something is not OK with the shortcode function, so it 
     // returns false 
     return false; 

    } 

} 
add_shortcode('myFunc', 'sc_getParam'); 

これらの参照を見上げて:

https://www.smashingmagazine.com/2012/05/wordpress-shortcodes-complete-guide/ -

+0

正確には、私は投稿と一緒に変更する必要があります。しかし、私はまだこのようなURLからパラメータを取るために[myFunc funcparam = "param"]を得ることができません。http://example.com?param=thisparam – Dimentica

+0

それから私はステップバイステップで行くことをお勧めします。ショートコードは正しく機能していますか?たとえば、ショートコードからパラメータを抽出し、テスト文字列を返します($ _GET []は使用しないでください)。正しく動作する場合は、$ _GET []で何が問題なのかを確認してください。そうでなければ、別の問題があります(ミスタイピングやそれに似たようなものでしょう)。 –

+0

また、別のことがあります:ショートコードはデフォルトでWPのどこでも動作しません(例:functions.phpでウィジェットを最初にアクティブ化しなければならない場合 - http://www.wpbeginner.com/wp-tutorials/how- –

0

を書くことができます疑います。 [myFunc param = whatever]

ショートコードの関数を呼び出す。

あなたのコードを少し変更しましたが、これは安全で清潔ではないことに注意してください。

0

はそれをこのように行います:

function getParam($data) 
{ 
    $var = $_GET[$data['param']]; 

    if ($var !== null && $var !== '') 
    { 
     echo "True: ".$var; 
    } 
    else echo "False: ".$var; 
} 

をとてそれを呼び出し

は例えば、私はあなたができるパラメータを取得する必要がある場合は、私が[myFunc param=$_GET['param']]

関連する問題