Почему не отображается содержимое массива get_option?

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

Мой код записывает параметры в базу данных, но не отображает их. Массив НЕ установлен. Можно добавить и удалить несколько опций.

Записывает данные:

<?php $mycontents = array('content' => $_POST['cont'], 'content2' => $_POST['cont2']); update_option('slider_contents',$mycontents); ?> 

Вот записи в базе данных:

 a:2:{s:7:"content";a:3:{i:0;s:19:"This is content 1-a";i:1;s:19:"This is content 2-a";i:2;s:19:"This is content 3-a";}s:8:"content2";a:3:{i:0;s:19:"This is content 1-b";i:1;s:19:"This is content 2-b";i:2;s:19:"This is content 3-b";}} 

Попытка чтения и отображения данных:

 <?php $the_contents=get_option('slider_contents'); foreach ($the_contents as $content) { $content1=stripslashes($content->content); $content2=stripslashes($content->content2); ?> <li><textarea name="cont[]" rows="3" style="width:70%;" ><?php echo $content1; ?></textarea><br><textarea name="cont2[]" rows="3" style="width:70%;" ><?php echo $content2; ?></textarea><br><input type="button" value="Delete this option" onClick="delete_field(this);" /><input type="button" value="Add new option" onClick="add_to_field(this);" /></li> <?php } ?> 

Я тоже пробовал …

 <?php $the_contents=get_option('slider_contents'); foreach ($the_contents as $content) { $content1=stripslashes($content['content']); $content2=stripslashes($content['content2']); ?> 

Результат var_dump($the_contents); является :

 array(2) { ["content"]=> array(3) { [0]=> string(19) "This is content 1-a" [1]=> string(19) "This is content 2-a" [2]=> string(19) "This is content 3-a" } ["content2"]=> array(3) { [0]=> string(19) "This is content 1-b" [1]=> string(19) "This is content 2-b" [2]=> string(19) "This is content 3-b" } } 

Solutions Collecting From Web of "Почему не отображается содержимое массива get_option?"

Давайте посмотрим на ваш код. Ваш первый блок кода обрабатывает массив как объект, поэтому ваша вторая попытка ближе к точности:

 $the_contents=get_option('slider_contents'); // var_dump($the_content); foreach ($the_contents as $content) { $content1=stripslashes($content['content']); $content2=stripslashes($content['content2']); 

Предполагая, что вы сделали то, что я предложил, и поместили var_dump где у меня есть в этом блоке кода, тогда происходит следующее: foreach ($the_contents as $content) { позволяет вам перебирать массив. На каждой итерации $content представляет собой массив, который выглядит так:

 array(3) { [0]=> string(19) "This is content 1-a" [1]=> string(19) "This is content 2-a" [2]=> string(19) "This is content 3-a" } 

Поэтому, когда вы пытаетесь получить доступ к $content['content'] вы пытаетесь получить доступ к ключу, которого не существует, вы уже зацикливали «прошлое». Вы можете продемонстрировать это для себя, выполнив:

 $the_contents = unserialize('a:2:{s:7:"content";a:3:{i:0;s:19:"This is content 1-a";i:1;s:19:"This is content 2-a";i:2;s:19:"This is content 3-a";}s:8:"content2";a:3:{i:0;s:19:"This is content 1-b";i:1;s:19:"This is content 2-b";i:2;s:19:"This is content 3-b";}}'); foreach ($the_contents as $content) { var_dump($content); } 

То, что вам нужно делать, – это цикл над этим массивом $contents выбор каждой части отдельно.

 foreach ($the_contents as $content) { // this part you already have foreach ($content as $c) { echo stripslashes($c); // you are building a string, of course, but that is the idea } }