将URL参数值放在WordPress短代码中

时间:2019-10-05 作者:tammix

我想检索一个URL参数值并将其放置在一个短代码中,以便将其作为变量处理,例如,

http://example.com/?source=http://example.com/media/myfile.pdf

帖子中的短代码是:

[嵌入文件=”source“]

注意:Source是URL参数的动态值

1 个回复
SO网友:Antti Koskinen

如果这是您自己开发的一个短代码,那么您可以添加url参数检查/获取,例如如下所示,

add_shortcode( \'EmbedMe\', \'embedme_callback\' );
function embedme_callback( $atts ) {

  $defaults = array(
    \'file\' => \'\'
  );
  $atts = shortcode_atts( $defaults, $atts, \'EmbedMe\' );

  if ( 
    \'source\' === $atts[\'file\']
    && ! empty( $_GET[\'source\'] )
    && $file = esc_url_raw( $_GET[\'source\'], array( \'http\', \'https\' ) ) 
  ) {
    $atts[\'file\'] = $file;
  }

  // some code

  return $html;  
}
在上面,我们检查file属性是否设置为“source”,并且它是否也设置为GET(url)参数。为了更好地衡量,url参数通过escape函数传递,以确保其格式正确。

如果短代码是由其他人开发的,那么您应该检查它是否提供了修改属性(或输出)的过滤器。如果是这样,那么可以将自定义函数挂接到过滤器,并在函数内部执行GET参数检查。就像这样,

add_filter( \'shortcode_atts_EmbedMe\', \'filter_EmbedMe_atts\' );
function filter_EmbedMe_atts( $atts ) {
  if (
    isset( $atts[\'file\'] )
    && \'source\' === $atts[\'file\']
    && ! empty( $_GET[\'source\'] )
    && $file = esc_url_raw( $_GET[\'source\'], array( \'http\', \'https\' ) )
  ) {
    $atts[\'file\'] = $file;
  }
  return $atts;
}

相关推荐

Shortcode based chart plugin

有谁知道一个WP插件可以根据短代码参数生成图表吗?i、 e.像这样的[chart type=\"bar\" values=\"1,2,4,7,3\"], [chart type=\"pie\" values=\"43,32,38\"] 所以不需要上传。txt/。csv文件,使用谷歌工作表等。谢谢PS:由于我们网站的工作方式(数据库生成一些内容),我们需要基于短代码。