WordPress шорткод вне & lt; p & gt; теги

Это может быть простой запрос, но у меня есть короткий код, который извлекает параметры 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

Решение

Проблема в том, что 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

Другие решения

Он будет добавлять тег абзаца каждый раз, потому что вы не можете использовать тег заголовка внутри тега абзаца.
Вы можете достичь желаемого результата с помощью кода ниже.

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);

}
0

По вопросам рекламы [email protected]