Como faço para liberar as regras depois de salvar as configurações usando a API de configurações?

4

Estou usando a API de configurações para permitir que o usuário alterne a opção has_archive em alguns tipos de postagem personalizados. Quando o usuário ativa ou desativa os arquivos, quero liberar as regras de reconfiguração. Se eu mesmo tivesse escrito a função de salvamento, poderia apenas chamar flush_rewrite_rules() e acabar com isso, mas a API de configurações cuida do salvamento para mim. Existe um gancho em algum lugar que eu possa usar?

Solução escolhida @Stephen Harris

add_action('admin_init', 'my_plugin_register_settings');
function my_plugin_register_settings() {
    if (delete_transient('my_plugin_flush_rules')) flush_rewrite_rules();
    register_setting('my_plugin', 'my_plugin_settings', 'my_plugin_sanitize');
    // add_settings_section(), add_settings_field(),...
}

function my_plugin_sanitize($input) {
    set_transient('my_plugin_flush_rules');
    return $input;
}
    
por Matt 03.04.2012 / 00:25

1 resposta

3

Você simplesmente precisa visitar as Configurações > Permalink página (você não precisa fazer nada lá) depois de salvar as configurações.

  

Se eu mesmo tivesse escrito a função de salvamento, poderia apenas chamar flush_rewrite_rules ()

Não é bem assim. flush_rewrite_rules() teria que ser chamado depois que o tipo de postagem personalizada fosse 'atualizado' para refletir as alterações, ou seja, depois de registrá-lo. Então você precisaria chamá-lo no próximo carregamento da página, depois que o CPT for registrado.

Você poderia usar um transitório para acionar flush_rewrite_rules () na próxima ( e somente na próxima ) init (e depois da CPT está registrado). Para deixar claro, flush_rewrite_rules() é caro e não deve ser chamado regularmente. Por isso, sugiro que você simplesmente peça aos usuários do plug-in para visitar o link Configurações > Permalink page após alterar as opções de permalink - assim, as regras são liberadas apenas quando são realmente necessárias.

    
por Stephen Harris 03.04.2012 / 00:39