Сценарий, приведенный ниже, предназначен для сканирования папки «widgets» на предмет ее подпапок и файлов .txt, которые они содержат. Каждая подпапка является прокси для одного из зарегистрированных «виджетов боковой панели» моей темы, а файлы .txt в каждой папке являются «текстовыми виджетами», которые будут вставлены в зарегистрированную боковую панель, представленную ее родительской папкой.
Скрипт работает нормально, чтобы поместить отдельный текстовый виджет в каждую зарегистрированную боковую панель. Однако если в папке содержится несколько текстовых файлов, она не увеличивает значение widget_id по мере необходимости, и единственный текстовый виджет, который записывается на боковую панель, является последним в папке.
Как в этом случае настроить правильный счетчик для widget_id?
/*Install Widgets from .txt files in child folders of "/widgets/"
-------------------------------------*/
$sidebars_widgets = get_option('sidebars_widgets');
$widget_ops = get_option('widget_text');
$widget_id = count($widget_ops)+1;
$base = dirname(__FILE__).'/widgets/';
$rdi = new RecursiveDirectoryIterator($base);
foreach(new RecursiveIteratorIterator($rdi) as $files_widgets)
{
if ($files_widgets->isFile())
{
$file_name_widget = $files_widgets->getPathname();
$sidebar_id = basename($files_widgets->getPath());
$widget_text = file_get_contents($file_name_widget);
$sidebars_widgets[$sidebar_id] = array("text-".$widget_id);
//Do I need another loop here?
//Only the last widget in the folder is created
$widget_ops[$widget_id] = array('title' => $files_widgets->getBasename('.txt'),'text' => $widget_text,);
update_option('widget_text', $widget_ops);
update_option('sidebars_widgets', $sidebars_widgets);
$widget_id = $widget_id +1;
}
}
Справочная информация:
Папка «widgets» содержит 5 папок, каждая из которых представляет зарегистрированную боковую панель, которую создает моя тема, и названа для идентификатора этой боковой панели.
Например, эта боковая панель зарегистрирована в functions.php
register_sidebar(array(
'name' => 'Home Sidebar',
'id' => 'home-sidebar-widget',
'before_widget' => '<div class="menu side %2$s sb">',
'after_widget' => '</div>',
'before_title' => '<h4 class="sidebarTitle">',
'after_title' => '</h4>',
));
И соответствующая папка, которая содержит все виджеты, которые будут предварительно заполнять этот виджет ...
widgets/home-sidebar-widget/
И он содержит 3 файла .txt, каждый из которых представляет текстовый виджет, который должен быть добавлен на эту боковую панель.
Проблема в том, что мой счетчик для widget_id, по-видимому, неверен, и я получаю только последний файл .txt в каждой папке, записанный на боковую панель.