Вопрос или проблема
Как я могу исправить этот код? У меня сейчас ошибки PHP из-за неопределенной переменной $current_year, если кастомное поле current_year пусто, я все равно должен видеть div и текст внутри div (кроме года, конечно)
$current_year = get_the_author_meta( 'current_year', $user->ID );
$titolo_display_price = sprintf(
'<div class="titolo_listino_prezzi" ID="titolo_listino_prezzi">' .
'<h3 class="titolo_affitti">' . esc_html( sprintf( __('Тарифы %s в €/ неделя:','mysite-plugin'), $current_year ) ) . '</h3>' .
'</div>',
esc_html( $current_year )
);
Я сделал несколько попыток, использовав $current_year=””;, но это не сработало, у меня все равно есть ошибки PHP или div пропадает
.
Ответ или решение
Для решения проблемы с неопределенной переменной $current_year
в вашем коде PHP, которая возникает, когда произвольное поле current_year
пустое, необходимо внести несколько корректировок. Это позволит вам избежать ошибок и сохранить отображение div и текста, независимо от наличия значения в данной переменной.
Способы решения проблемы
-
Проверка на пустоту значения:
Прежде всего, требуется удостовериться, что переменная$current_year
всегда содержит значение, даже если это значение пустое. Для этого можно использовать оператор объединения ноль (??
), который позволяет установить значение по умолчанию при отсутствии значения. -
Корректировка формата вывода:
Мы также можем улучшить форматирование кода для лучшего читаемости и понимания. Вместо того чтобы применятьsprintf
внутриesc_html
, будет полезнее использовать его правильным образом.
Пример исправленного кода
Вот пример того, как можно переписать ваш код, чтобы избежать ошибок и сохранить функциональность:
$current_year = get_the_author_meta('current_year', $user->ID) ?? ''; // Присваиваем пустую строку, если значение отсутствует
$titolo_display_price = sprintf(
'<div class="titolo_listino_prezzi" ID="titolo_listino_prezzi">' .
'<h3 class="titolo_affitti">%s</h3>' .
'</div>',
esc_html(sprintf(__('Rates %s in &euro;/ week:', 'mysite-plugin'), $current_year ?: __('N/A', 'mysite-plugin'))) // Если $current_year пустое, выводим 'N/A'
);
Объяснение внесенных изменений
-
Проверка наличия значения:
Использование??
позволяет присвоить$current_year
значение пустой строки по умолчанию, если результатget_the_author_meta()
будетnull
. -
Использование тернарного оператора:
($current_year ?: __('N/A', 'mysite-plugin'))
, помогает нам установить выходное сообщение, если$current_year
пусто. В этом случае, еслиcurrent_year
отсутствует, будет выведеноN/A
вместо пустого текста, что обеспечивает информативность.
Заключение
Данные изменения позволят вашему коду работать корректно без возникновения ошибок, связанных с неопределенной переменной. Кроме того, теперь будет отображаться div с текстом, что улучшает пользовательский опыт, даже когда данных нет. Убедитесь, что вы проверили код после внесения изменений, чтобы удостовериться в его работе в соответствии с вашими требованиями.
Эти улучшения не только исправляют текущие ошибки, но и делают ваш код более устойчивым и понятным.