Параметры API короткого кода отвергаются как логика в Конгрессе

65
4

Я просматривал это больше раз, чем могу рассчитать, но не могу, чтобы жизнь меня определяла, что я делаю неправильно. В прошлом я часто писал функции короткого кода, а также больше, чем могу рассчитывать. По какой-то причине этот человек отказывается работать правильно. После часа попыток снова и снова, я не нашел успеха. Пожалуйста помоги.

Значения по умолчанию отображаются в html просто отлично, но не будут отражать параметры, установленные в коротком коде.

    Я пробовал обрабатывать ID как строку и целое число. Возможно, Wordpress не любит, когда я пытаюсь использовать attr ID... Пробовал listID, все еще не получив. Я попытался использовать extract vs, сохраняя результат shortcode_attr() в переменной. Думал, что плагин или post_type мешали мне выиграть, но, взяв пример кода кода короткого кода из Wordpress.org и вставив его в functions.php и разместив свой короткий код на моем посту, он сработал. Я сойду с ума Я очистил Object Cache, чтобы отладить это, я изменил значения по умолчанию в функции, которые появляются на стороне клиента сразу после изменения. Возможно, Shortcode API не любит, когда я строю строки. Сохраняли его в буфер, используя ob_start() и ob_get_clean() (например, принимайте душ?)... нет радости Нет, var_dump и print_r ничего не помогают мне, нет выхода. Даже когда я пытаюсь var_dump(array('foo' => 'bar')) или print_r(array('foo' => 'bar'))

Мое здравомыслие сейчас проверяется вне разумной меры, и я фантазирую о DDOSing Matt Mullenweg smartphone

Пожалуйста, вылечите мое безумие и укажете на крошечные детали, которые я, очевидно, игнорирую, поэтому я могу продолжить свой день.

Короткий код

[subscription ID="1" referrer="overlay-promotion" buttonText="Send it to me" buttonBGHex="#000c49"]

функция

function subscription_form($atts){
//Yes, I tried extract to, and yes, I changed the variables in the html below to reflect this change.
$a = shortcode_atts( array(
"ID" => "1",
"referrer" => "not-what-you-think-this-should-be",
"buttonText" => "Subscribe",
"buttonBGHex" => "#78C138"
), $atts, "subscription" );

$html = '<form id="subscribe" name="email_signup" class="form-inline validate" action="http://www.example.com/subscribe" method="post">';
$html .= '<input type="hidden" name="referrer" value="'.$a["referrer"].'">';
$html .= '<input type="hidden" name="success_url" value="http://www.example.com/subscribe/success">';
$html .= '<input type="hidden" name="error_url" value="http://www.example.com/subscribe/error">';
$html .= '<input type="hidden" name="list_id" value="'.$a["ID"].'">';
$html .= '<input type="text" placeholder="Enter your email address" class="input-large" name="email">';
$html .= '<input type="submit" class="btn btn-primary" style="background-color:'.$a["buttonBGHex"].';" name="submit" value="'.$a["buttonText"].'">';
$html .= '</form>';

return $html;
}
add_shortcode( 'subscription', 'subscription_form' );

enter image description here

Вывод

<form id="subscribe" name="email_signup" class="form-inline validate" action="https://www.example.com/subscribe" method="post">
<input type="hidden" name="referrer" value="HP-overlay-2015">
<input type="hidden" name="success_url" value="https://www.example.com/subscribe/success">
<input type="hidden" name="error_url" value="https://www.example.com/subscribe/error">
<input type="hidden" name="list_id" value="1"><input type="text" placeholder="Enter your email address" class="input-large" name="email">
<input type="submit" class="btn btn-primary" style="background-color:#78C138;" name="submit" value="Subscribe">
</form>

enter image description here

спросил(а) 2021-01-19T21:17:28+03:00 9 месяцев, 1 неделя назад
1
Решение
65

В соответствии с Codex для add_shortcode имена атрибутов для add_shortcode преобразуются в нижний регистр.

Имена атрибутов Shortcode всегда преобразуются в строчные буквы, прежде чем они передаются в функцию обработчика. Значения нетронуты.

Это означало бы, что вам нужно получить доступ к вашим клавишам массива с строчной версией для правильного вывода.

ответил(а) 2021-01-19T21:17:28+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема