Intereting Posts
Получить все медиафайлы для текущего автора current-user_can не работает в цикле Как я могу добавить значок короткого кода редактирования в редакторе WordPress без использования выборочного обновления? Как обрабатывать sql с примером таблицы пользовательских списков Как предотвратить перенаправление при использовании термина «страница» в строке запроса? Shortcode для входа пользователя в текущий URL Как условно скрыть имя автора в Single.php, если категория – это «новости», иначе, если категория – это что-то еще, отображающее имя автора? После ввода кода погоды jquery мое отзывчивое меню потеряно Загрузка внутренней страницы Заполнение содержимого при установке Уменьшите размер загрузки мобильного изображения (wordpress) Сделайте только изображение привязкой, используя расширенный плагин excerpt? Несколько URL-адресов, основанных на категории для одной должности как перейти к пользовательскому статусу сообщения после сохранения сообщения Ajax для подсеванов не работает

Обновление параметров виджета в пользовательском install.php

Я использую пользовательский файл install.php in / wp-content /, чтобы переопределить некоторые значения по умолчанию при создании сайтов при установке на нескольких сайтах. По большей части это легко и работает очень хорошо. Однако у меня возникают трудности с виджетами. Все, что я хочу для виджетов, это виджет поиска и пользовательский мета-виджет, который мы используем внутри компании.

В моей функции wp_install_defaults () у меня есть следующее …

<?php function wp_install_defaults( $user_id ) { global $wpdb, $wp_rewrite, $table_prefix; ... lots of stuff setting up default settings and default content ... // Set up default widgets for default theme. update_option( 'widget_search', array ( 2 => array ( 'title' => '' ), '_multiwidget' => 1 ) ); update_option( 'widget_vvnumetawidget', array ( 2 => array ( 'title' => '' ), '_multiwidget' => 1 ) ); update_option( 'sidebars_widgets', array ( 'wp_active_widgets' => array (), 'sidebar-1' => array ( 0 => 'search-2', 1 => 'vvnumetawidget-2' ), 'sidebar-2' => array (), 'sidebar-3' => array (), 'array_version' => 3 ) ); ... a few more options are set ... } 

В основном это работает, однако … изначально на боковой панели отображается только виджет поиска. Если я перейду на экран администратора Widgets, пользовательский мета-виджет будет там, где он должен быть и будет активным. Если я нажму на кнопку «Сохранить» для нее, она отобразится правильно в общедоступной боковой панели.

Я попробовал запустить другой update_option для моего виджета после обновления опции sidebar_widgets.

  update_option( 'widget_vvnumetawidget', array ( 2 => array ( 'title' => 'Second update' ), '_multiwidget' => 1 ) ); 

Это работает в том, что заголовок обновляется, но он все равно не отображает его публично, пока я не перейду вручную на экран администратора и не нажмем «Сохранить». Мне не нужно делать это для виджета «Поиск».

Любые идеи, что мне не хватает?

Посмотрев в таблице параметров базы данных, я вижу пару вещей, которые заставляют меня задаться вопросом, не потому ли, что мой пользовательский виджет является плагином? Например, после установки я вижу следующие параметры …

sidebars_widgets

 a:3:{s:19:"wp_inactive_widgets";a:0:{}s:9:"sidebar-1";a:2:{i:0;s:8:"search-2";i:1;s:16:"vvnumetawidget-2";}s:13:"array_version";i:3;} 

widget_search

 a:2:{i:2;a:1:{s:5:"title";s:0:"";}s:12:"_multiwidget";i:1;} 

widget_vvnumetawidget

 a:2:{i:2;a:1:{s:5:"title";s:0:"";}s:12:"_multiwidget";i:1;} 

На данный момент, для публичного лица, у меня есть только виджет поиска на боковой панели. Если я перейду к администратору, поиск и мой пользовательский виджет Meta находятся в активной области для моей боковой панели (хотя мой пользовательский не отображается). Если я нажму «Сохранить» для своего настраиваемого виджета Meta, он теперь будет публично отображаться, и если я проверю, что находится в таблице опций, то теперь …

widget_vvnumetawidget

 a:2:{i:2;a:9:{s:5:"title";s:0:"";s:8:"register";N;s:5:"login";s:1:"1";s:8:"entryrss";s:1:"1";s:10:"commentrss";s:1:"1";s:10:"nipissingu";s:1:"1";s:10:"showcustom";N;s:9:"customurl";s:0:"";s:10:"customtext";s:0:"";}s:12:"_multiwidget";i:1;} 

Итак, теперь мне кажется, что мне тоже нужно установить эти значения по умолчанию для моего настраиваемого виджета, в моем файле install.php, или в моем php-скрипте пользовательского виджета, проверить наличие этих значений по умолчанию и установить там подходящее поведение, так как теперь рассматривается отсутствие умолчаний как 0 вместо нуля.

Я проверю и отчитаю.

Итак, фактическая проблема заключалась в том, что я не устанавливал никаких настроек по умолчанию для своего пользовательского виджета, необходимого для отображения любого содержимого. Виджет на самом деле был там, но поскольку я опустошил заголовок и не установил никаких других значений по умолчанию, это ничего не отображало. Мое исправление для этого было в два раза.

1) установить хотя бы один параметр по умолчанию в моем файле install.php

 update_option( 'widget_vvnumetawidget', array ( 2 => array ( 'title' => 'Meta Links', 'register' => 1, 'login' => 1 ), '_multiwidget' => 1 ) ); 

2) поместите некоторую логику в свой пользовательский виджет, чтобы отобразить сообщение, если оно установлено, но настройка не задана.

Спасибо @Nathan за то, что заставил меня взглянуть немного ближе к этим настройкам.