#php #wordpress #divi
Вопрос:
На сайте wordpress, созданном с помощью divi, в functions.php
файле в папке divi theme includes builder я получаю прерывистую ошибку в строке:
$value = substr( $value, 1, $value_length ) . trim();
Ошибка гласит Warning: trim() expects at least 1 parameter, 0 given
Это потому, что внутри ничего нет? Но приковывание его вот так на конце должно относиться к тому, к чему он прикован, верно? Так substr
что оф $value
. Означает ли это, что $value
этого просто не дано? Или что, когда ты получаешь substr
, там больше ничего нет?
Хотел бы использовать консоль javascript.войдите в журнал, чтобы посмотреть, что на самом деле там сейчас 😀 . Существует ли эквивалент php? Или какой-то плагин для php для инструментов разработки, где я могу видеть переменные в любой момент?
Кто-нибудь знает, в чем здесь проблема? Я даже не уверен, что этот фрагмент кода делает в данный момент, что-то связанное с установкой значения css px для некоторого текста, я предполагаю…, и удалением !important
свойства?
if ( ! function_exists( 'et_pb_get_value_unit' ) ) :
/**
* Get unit of given value
*
* @param string $value string with unit.
* @param string $default_unit default unit.
*
* @return string unit name
*/
function et_pb_get_value_unit( $value, $default_unit = 'px' ) {
$value = isset( $value ) ? $value : '';
$valid_one_char_units = array( '%', 'x' );
$valid_two_chars_units = array( 'em', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ex', 'vh', 'vw', 'ms' );
$valid_three_chars_units = array( 'deg', 'rem' );
$important = '!important';
$important_length = strlen( $important );
$value_length = strlen( $value );
if ( '' === $value || is_numeric( $value ) ) {
return $default_unit;
}
if ( substr( $value, ( 0 - $important_length ), $important_length ) === $important ) {
$value_length = $value_length - $important_length;
$value = substr( $value, 1, $value_length ) . trim();
}
if ( in_array( substr( $value, -3, 3 ), $valid_three_chars_units, true ) ) {
return substr( $value, -3, 3 );
}
if ( in_array( substr( $value, -2, 2 ), $valid_two_chars_units, true ) ) {
return substr( $value, -2, 2 );
}
if ( in_array( substr( $value, -1, 1 ), $valid_one_char_units, true ) ) {
return substr( $value, -1, 1 );
}
return $default_unit;
}
endif;
Комментарии:
1. Это довольно самоочевидно! Измените его на
$value = trim(substr( $value, 1, $value_length ));
. Ты работаешь сphp
неjavascript
!2. @Ruvee Спасибо, я подумал, что это вероятная проблема. Из того, что я могу сказать, это ошибка в профессиональном конструкторе тем wordpress
divi
, поэтому меня шокирует, что 1)ошибка существует, и 2) когда я гуглю ошибку, ничего не появляется. Можно подумать, что об этой проблеме уже писали в Интернете раньше.3. Нет проблем! Ну, не уверен, я не использовал
divi
или какие-либо другие конструкторы тем. Я пишу свои собственные темы, но ошибка заключалась в том, чтобы точно сказать вам, что происходит. Не знаю, почему разработчики тем написали такой синтаксис.
Ответ №1:
Подобная цепочка является особенностью других языков (например, JavaScript), однако она не является особенностью PHP. Как написано, вы «соединяете «»обрезанное null
«» в конце значения, что на самом деле не имеет смысла.
Взгляните на trim()
документацию функции — string
аргумент необходим, чтобы он знал, что обрезать.
Если бы вы хотели «связать» таким образом, вам действительно нужно было бы охватить значение trim
примерно так:
$value = trim( substr( $value, 1, $value_length ) );
Вы можете увидеть «цепные» функции, подобные тем, которые называются «вложенными» в том, что касается PHP.
Что касается того, что делает код, это относительно сложный способ возврата типа единицы измерения из значения — вероятно, для того, чтобы проверить, является ли это rem
px
, %
— и т. Д. Для использования в других вычислениях в других местах. Это можно было бы немного упростить ( возможно, одну строку с регулярным выражением), но это выходит за рамки данного вопроса