2014-01-31 2 views
0

Когда я загружаю мою тему в WordPress, я получаю это уведомление на странице опций:Как вы исправить это уведомление: Неинициализированное смещение строки: 0 с помощью stripslashes?

Uninitialized строка смещения: 0

Это мой код:

function name_of_function ($args) { 
    extract($args); 
    $option_name = 'the_theme_options'; 
    $options = get_option($option_name); 
    switch ($type) { 
     case 'text': 
      $options[$id] = stripslashes($options[$id]); 
      $options[$id] = esc_attr($options[$id]); 
      echo "<input class='regular-text$class' type='text' id='$id' name='" . $option_name . "[$id]' value='$options[$id]'>"; 
      echo ($desc != '') ? "<br><span class='description'>$desc</span>" : ""; 
     break; 

Когда я сохранить, уведомление уходит.

Я попытался добавить IsSet, как это (я получаю Примечание: не определен индекс в первый):

$options[$id] = stripslashes(isset($options[$id]); 

Ошибки уйти, но он не может спасти.

Затем я добавил IsSet к следующей строке:

$options[$id] = esc_attr(isset($options[$id])); 

Еще не работал.

Я попытался удалить эту строку, но я все еще получаю ошибки:

$options[$id] = stripslashes($options[$id]); 

Я даже попытался это:

if (isset($options[$id]) { 
    $options[$id] = stripslashes($options[$id]); 
} 

Я знаю теперь, что некоторые из вещей, которые я пытался не делать смысл.

Я искал часы. Прочтите некоторые документы. Кажется, не может найти решение этого.

ответ

3

$options - string in this context, а не массив. Вы пытаетесь рассматривать его как массив, который не работает. Логика вашего кода никогда не будет работать; неясно, что вы пытаетесь сделать с $options[$id].

Причина вы получаете

Uninitialized строка смещения: 0

что $id не инициализируется в любом месте, так что PHP обрабатывает его как 0. Вы говорите: «Посмотрите на эту строку ($ options) и получите значение массива в ключе 0», и PHP бросает руки вверх, потому что это не имеет смысла.

Ваши различные решения не будут работать по нескольким причинам. stripslashes(isset($options[$id]); не работает, потому что (1) $options[$id] не существует и (2) stripslashes() принимает параметр строки, но вы передаете ему логическое значение. Та же проблема с

+0

Хорошо, это объясняет, почему мой флажок работал, когда остальное не было. Спасибо! Как определить $ id? – user3204179

+0

Я рад, что это помогает! Пожалуйста, примите ответ, если вы сочтете это полезным. :) Что касается определения '$ id': неясно, чего вы ожидаете от' $ id' или того, что вы пытаетесь сделать с ним. В приведенном выше коде есть несколько неинициализированных переменных ('$ id',' $ type' и '$ desc'), поэтому трудно сказать, что вы пытаетесь сделать. Лучший способ получить помощь - пересмотреть свой код, а затем опубликовать новый вопрос, содержащий новый код, если вы застряли. –

+0

Да, спасибо! Я только что опубликовал вопрос.Если бы вы могли взглянуть на него и помочь, это было бы оценено! http://stackoverflow.com/questions/21489669/how-to-initialize-id-from-another-function – user3204179

Смежные вопросы