【问题标题】:Pass variables to shortcode from the url in Wordpress从 Wordpress 中的 url 将变量传递给简码
【发布时间】:2018-08-29 10:09:39
【问题描述】:

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

我将让[Shortcode vendor=vendor1] 仅显示与 一个供应商,我知道该怎么做。

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

感谢任何帮助。

【问题讨论】:

  • 欢迎来到 Stack Overflow!您似乎在要求某人为您编写一些代码。 Stack Overflow 是一个问答网站,而不是代码编写服务。请see here学习如何写出有效的问题。

标签: php wordpress get shortcode vendors


【解决方案1】:

要从 URL 传递一些变量,您将在短代码中使用 $_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 文件中。经过测试并且有效。

用法:

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

你会得到生成的 html 输出:

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

【讨论】:

    【解决方案2】:

    同意 Derek 的观点,这个问题很不清楚。

    据我了解,您想提取在包含您的简码的页面的 URL 上传递的参数(比如“供应商”参数),并让简码参数可以动态地获取该值?

    如果是这种情况,那就没有意义了:短代码用于生成页面的代码(HTML、JavaScript、.. 在浏览器中运行的任何内容),并在生成的页面中完全消失,这意味着你可以' t 在 URL 参数的值上表现不同。除非您的短代码生成的代码 (JavaScript) 包含一些“供应商”变量,该变量可以从参数中获取其值,并依次生成一些东西 ( HTML、SVG……),简而言之,某种棘手的代码……

    【讨论】:

      猜你喜欢
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      相关资源
      最近更新 更多