将变量传递给Wordpress中的url的短代码

时间:2018-03-20 14:24:43

标签: php wordpress get shortcode vendors

我制作了一个简单的WP插件,它将从calameo.com获取一些文档并以一种很好的方式呈现它们。我为它制作了自定义短代码。我们称之为" Shortcode" ...

我将[Shortcode vendor=vendor1]仅显示与之相关的文档 供应商,我知道如何做到这一点。

我需要做的是将参数值从网址传递到短代码,但我还没有找到方法。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

与Derek同意,这个问题还不清楚。

根据我的理解,您想要提取在包含您的短代码的页面的URL上传递的参数(例如' vendor'参数),并使短代码参数可以动态获取此值?

如果是这样,那就没有意义了:短代码用于生成页面代码(HTML,JavaScript,......在浏览器中运行的任何内容),并且已经完全消失了生成的页面,意味着您对URL参数的值的行为不同。除非您的短代码生成包含某些供应商的代码(JavaScript)。可以从参数中获取其值的变量,并生成一些东西(HTML,SVG ......),简而言之,某种棘手的代码..

答案 1 :(得分:0)

要从网址传递一些变量,您将在短代码中使用$_GET,如下例所示:

if( ! function_exists('this_is_my_shortcode') ) {
    function this_is_my_shortcode( $atts, $content = null ) {
        // Attributes
        $atts = shortcode_atts( array(
            'vendor' => '',
            'thekey1'    => isset($_GET['thekey1']) ? sanitize_key($_GET['thekey1']) : '',
            'thekey2'    => isset($_GET['thekey2']) ? sanitize_key($_GET['thekey2']) : '',
        ), $atts, 'my_shortcode' );

        // Variables to be used
        $vendor_value = $atts['vendor'];
        $value1 = $atts['thekey1']; // the value from "thekey1" in the url
        $value2 = $atts['thekey2']; // the value from "thekey2" in the url

        // Your code … / …


        if( ! empty( $value1 ) )
            $value1 = ' | Value 1: ' . $value1;

        if( ! empty( $value2 ) )
            $value2 = ' | Value 2: ' . $value2;

        // Output: Always use return (never echo or print)
        return '<p>Vendor: ' . $vendor_value . $value1 . $value2 . '<p>';
    }
    add_shortcode("my_shortcode", "this_is_my_shortcode");
}

代码放在活动子主题(或主题)的function.php文件中。测试和工作。

<强> USAGE:

  • 网址如:http://www.example.com/your-page/?thekey1=document1&thekey2=document2
    (每个参数键/值对由&字符分隔)
  • shordcode:
    • 在wordPress页面/帖子文本编辑器中:[my_shortcode vendor="vendor1"]
    • 在php代码中:echo do_shortcode( "[my_shortcode vendor='vendor1']" );

您将获得生成的html输出:

<p>Vendor: vendor1 | Value 1: document1 | Value 2: document2</p>