<p>标签外的Wordpress短代码

时间:2018-01-30 22:53:55

标签: php wordpress wordpress-shortcode

这可能是一个简单的问题但是我有一个用于提取url参数的短代码。然后它将它们包装在HTML标记中并返回。我遇到的问题是当客户端将短代码放入wordpress编辑器并将其居中时,页面上返回的值是左对齐的。当我检查元素时,我看到原始居中的<p>标记之外的返回值。

<p style="text-align: center;"></p>
<h2>Thank You for Your Request</h2>
<p>We will be in touch shortly to schedule your briefing</p>
<p></p>

这是功能:

add_shortcode('return-url-params', 'get_params');

function get_params() {

    $str = '';
    $str .= '<h2>' . $_GET['thxheadline'] . '</h2>';
    $str .= '<p>' . $_GET['thxtext'] . '</p>';

   return urldecode($str);

}

如何在居中的

标签内返回短代码值?

2 个答案:

答案 0 :(得分:1)

这里的问题是WordPress将您的短代码包装在段落标记中,以便集中对齐您的短代码。

这意味着在页面上,您的<h2><p>元素是所述段落的子元素,这是无效的标记。现在,浏览器会错误地解析您的页面,并导致您在检查元素时看到的内容。 (请注意,如果您要查看页面源代码,则会看到无效的标记)。

您最好的选择是为您的客户提供通过短代码参数更改对齐的功能。如果您的短代码功能如下所示:

add_shortcode('return-url-params', 'get_params');

function get_params( $atts ) {

    $atts = shortcode_atts( array(
        'align' => 'inherit',
    ), $atts, 'return-url-params' );

    $str = '';
    $str .= '<div style="text-align: ' . $atts['align'] . '">';
    $str .= '<h2>' . $_GET['thxheadline'] . '</h2>';
    $str .= '<p>' . $_GET['thxtext'] . '</p>';
    $str .= '</div>';

    return urldecode($str);

}

然后您的客户可以像这样使用短代码:

[return-url-params align="center"]

使用'align'参数获取任何CSS text-align属性。

您还可以使用该参数为包含<div>的特定CSS类提供样式并应用样式,但这只是为了给您一个想法。

答案 1 :(得分:0)

每次都会附加段落标记,因为您无法在段落标记内使用标记标记。 您可以通过以下代码获得所需的结果。

add_shortcode('return-url-params', 'get_params');

function get_params() {

    $str = '<div style="text-align: center;">';
    $str .= '<h2>Header</h2>';
    $str .= '<p>paragraph</p>';
    $str .= '</div>';
   return urldecode($str);

}