Wordpress添加发送参数的短代码

时间:2016-09-27 12:20:46

标签: php wordpress

在我的wordpress页面上,我创建了一个短代码函数,它从帖子的url中获取参数。所以,我创建了这个简单的函数,并将以下代码添加到主题的文件函数中.php

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

add_shortcode('myFunc', 'getParam');

我知道我必须使用(在我的情况下)[myFunc param='']

将这个短代码添加到帖子和页面

通常,我会使用<?php $_GET['param'] ?>从网址获取参数的值,但在这种情况下,我不知道如何将此PHP代码发送到短代码功能。

例如,我怀疑我可以写[myFunc param=$_GET['param']]

3 个答案:

答案 0 :(得分:1)

像这样的短代码:

[myFunc funcparam="param"]

此处不需要,除非被调用的参数随帖子而改变

假设你有这个网址:

http://example.com?param=thisparam

要使用上面描述的短代码获取'param'的值,你在functions.php中的函数应该如下所示:

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/ - 有关创建短代码的教程

https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data - 消毒

答案 1 :(得分:0)

如果您需要获取参数:

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');

答案 2 :(得分:0)

这样做:

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

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

并通过以下方式调用:[myFunc param = whatever]

U shoudnt调用短代码中的函数。

为了更好地理解,我稍微改变了你的代码,但要注意这不安全和干净。