Это может быть простой запрос, но у меня есть короткий код, который извлекает параметры 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);
}
Как я могу вернуть значения шорткода по центру
теги?
Проблема в том, что 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 и применять стили к нему, но это просто, чтобы дать вам представление.
Он будет добавлять тег абзаца каждый раз, потому что вы не можете использовать тег заголовка внутри тега абзаца.
Вы можете достичь желаемого результата с помощью кода ниже.
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);
}