Intereting Posts
как добавить данные в таксономии для публикации с помощью wp_insert_post Возможно ли отобразить DIV для неавторизованных пользователей, а затем изменить его для пользователей, которые вошли в систему? Как создать многоуровневые роли с предопределенными темами Совместное использование папки wp-контента по различным установкам WordPress multisite WordPress не загружает HTML Может формировать записи из формы WordPress, переходить в базу данных Перемещение 'register_post_type' для разделения файла не работает Пользовательское меню Broken WP 3.8.1 Update Как вставить код в заголовок? Facebook как кнопка, которая перенаправляет? Сортировка по наличию / на складе, затем по другим критериям в WooCommerce Изменить аргументы запроса (фильтр) с помощью jQuery / Ajax или PHP? где находится основной файл в этом плагине? Как создать пользовательский пакет установки WordPress? Как установить одно пробел как ширину как один символ в wordpress?

Сохранить номер версии плагина в качестве опции?

Кажется, я вспоминаю, как я видел подсказку, говоря, что лучше всего сохранить номер версии плагина в качестве опции. Я работаю над выпуском плагина, и я подумываю о том, делать ли это, но поскольку весь плагин делает виджет (прямо сейчас, у него буквально нет других вариантов), я изо всех сил пытаюсь понять, что бы я сделал когда-либо с этим вариантом. Я уже устанавливаю константу с номером версии для использования в нескольких местах (в основном wp_enqueue_* ).

Может ли кто-нибудь указать мне на хороший ресурс или объяснить варианты использования для сохранения номера версии в качестве опции?

Solutions Collecting From Web of "Сохранить номер версии плагина в качестве опции?"

Вам нужно сохранить версию в базе данных – иначе. сохраните его «как вариант», чтобы ваш сценарий имел пример сравнения. То есть, ваш скрипт должен …

  1. Проверьте базу данных на номер версии
  2. Сравните этот номер версии с номером новой версии – переменной или константой в вашем файле плагина.
  3. Обновлять вещи, если необходимо
  4. Сохранить номер новой версии в базе данных

Если все, что у вас есть, является константой в вашем .php-файле. Он всегда соответствует, что означает, что он практически бесполезен для любого автоматического обновления. Конечно, вы можете отслеживать версии плагинов только с константой, но ее сохранение в базе данных – это возможность автоматически обновлять вещи по мере необходимости.

Как вы говорите, если плагин достаточно прост, он может и не понадобиться.

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

Обратитесь к следующей теме Q & A для некоторых хороших примеров:
Примечание: ни один из приведенных здесь кодов не является моим полным кредитом, в котором должен быть кредит!


Вопрос: Освобождение новой версии плагина, как переименовать старые ключи параметров?

m0r7if3r предоставляет следующие https://wordpress.stackexchange.com/a/49736/13418

 if( $db_version < {your desired version} ) { // previous updates and such $db_version = $new_version; //put that in the database } if( $db_version < $current_version ) { create $options array foreach( $option as $o ) { if( get_option( $o['old_name'] ) ) { update_option( $o['new_name'], get_option( $o['old_name'] ) ); delete_option( $o['old_name'] ); //clean up behind yourself } } and then update your database version again } 

что является принятым ответом на этот вопрос.

Однако,

Один Trick Pony продолжает разрабатывать этот пример с хорошим кодом в ответ …

 class MyPlugin{ const OPTION_NAME = 'my_plugin_options', VERSION = '1.0'; protected $options = null, // default options and values go here $defaults = array( 'version' => self::VERSION, // this one should not change 'test_option' => 'abc', 'another_one' => 420, ); public function getOptions(){ // already did the checks if(isset($this->options)) return $this->options; // first call, get the options $options = get_option(self::OPTION_NAME); // options exist if($options !== false){ $new_version = version_compare($options['version'], self::VERSION, '!='); $desync = array_diff_key($this->defaults, $options) !== array_diff_key($options, $this->defaults); // update options if version changed, or we have missing/extra (out of sync) option entries if($new_version || $desync){ $new_options = array(); // check for new options and set defaults if necessary foreach($this->defaults as $option => $value) $new_options[$option] = isset($options[$option]) ? $options[$option] : $value; // update version info $new_options['version'] = self::VERSION; update_option(self::OPTION_NAME, $new_options); $this->options = $new_options; // no update was required }else{ $this->options = $options; } // new install (plugin was just activated) }else{ update_option(self::OPTION_NAME, $this->defaults); $this->options = $this->defaults; } return $this->options; } } 

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

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

Я думаю, вы имеете в виду книгу Wrox WordPress Plugin или, возможно, что-то в блоге Ozh et als. Я также просто прочитал его, упомянутый в руководстве по плагину Apress WordPress.

Аргументом является то, что, записав номер версии в базе данных, тогда, когда вы выдаете обновление плагина, у вас есть больше контроля над тем, что нужно «обновлять» … код выглядит примерно так:

 DEFINE VERSION (1.0); function add_settings(); if (get_option(youroptions[VERSION]) === false { \\ ie first time user add_option(youroptions[version]) = VERSION; add_option(youroptions[anotheroption]) ; } elseif (get_option(youroptions[VERSION]) !='1.0'{ \\user has old plugin ... do something for them add_option(youroptions[optionname]) } 

Это помогает? Я использую пример кода выше из книги Apress WP (но я набрал это из памяти).