Изменение настраиваемого типа сообщений из параметров плагина

Я хотел бы дать пользователям возможность изменить пользовательский пул сообщений в моем плагине. Используя этот ответ, я могу жестко установить его в функцию:

Redeclare / Change Slug настраиваемого типа плагина

Итак, как я могу переписать это для обновления, когда пользователь обновляет параметр плагина? Я попробовал что-то вроде этого:

function add_custom_rewrite_rule() { $slug = get_option('change_rewrite_slug'); // my plugin option // First, try to load up the rewrite rules. We do this just in case // the default permalink structure is being used. if( ($current_rules = get_option('rewrite_rules')) ) { // Next, iterate through each custom rule adding a new rule // that replaces 'movies' with 'films' and give it a higher // priority than the existing rule. foreach($current_rules as $key => $val) { if(strpos($key, 'my_post_type') !== false) { add_rewrite_rule(str_ireplace('my_post_type', $slug, $key), $val, 'top'); } // end if } // end foreach } // end if/else // ...and we flush the rules flush_rewrite_rules(); } // end add_custom_rewrite_rule add_action('init', 'add_custom_rewrite_rule'); 

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

Кроме того, после его изменения мне нужна функция для обновления, получить текущую опцию, а затем изменить slug на основе любого нового ввода.

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

Обновление: я использую этот класс: http://tareq.wedevs.com/2012/06/wordpress-settings-api-php-class/

Вот раздел кода страницы параметров:

  function flush_settings() { if( isset( $_REQUEST['settings-updated'] ) ) flush_rewrite_rules(); } /** * Returns all the settings fields * * @return array settings fields */ function get_settings_fields() { $settings_fields = array( // Other settings here 'djgigs_basic_settings' => array( array( 'name' => 'djgigs_rewrite_slug', 'label' => __( 'Permalink Slug', 'wedevs' ), 'desc' => __( 'Enter a custom permalink slug. The default is \'djgig\' but you could change it to \'gigs\' or \'events\'. ', 'wedevs' ), 'type' => 'text', 'default' => 'djgig', ), ) ); return $settings_fields; } 

Не уверен, что это правильное местоположение для добавления функции флеша или если в классе что-то есть, что делает это неработоспособным.