在我的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']]
答案 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调用短代码中的函数。
为了更好地理解,我稍微改变了你的代码,但要注意这不安全和干净。