register_setting () vs add_option ()

4

Estou criando meu primeiro plug-in WordPress. Eu adicionei uma função personalizada no gancho de ativação do plugin, onde eu crio novas linhas na tabela wp_options usando a função add_option() . Agora, quero criar uma página da API de configurações personalizadas e observei que as pessoas usam register_setting() function e, em seguida, renderizam essas funções e etc, mas, como eu sei, ele cria uma linha dentro de wp_options table? Então eu ainda preciso ligar admin_init e chamar esses register_setting() se eu fiz add_option() antes?

    
por Drzim Ti Miesto 10.01.2017 / 16:08

1 resposta

1
  

Então eu ainda preciso ligar admin_init e chamar esses register_setting() se eu fiz add_option() antes?

Sim. Você precisa.

Você pode adicionar add_option para definir o valor padrão. Outra chamada para add_option não fará nada. No entanto, a ideia de register_setting() é mais do que apenas add_option() .

Cada configuração tem a página de contexto, como (geral, leitura, escrita, mídia, alguma página que você definiu, ...) e pode ter a função de retorno de chamada em que você pode executar ações em seus dados. / p>

Para mais informações, consulte a API de configurações .

Alguém pode achar que a API de configurações é uma grande bagunça. BTW, isso é o que você pode ler no núcleo do WordPress.

File: wp-admin/includes/template.php
2: /**
3:  * Template WordPress Administration API.
4:  *
5:  * A Big Mess. Also some neat functions that are nicely written.

(há também parte da API de configurações em wp-includes / option.php )

Por outro lado, um exemplo do códice pode ajudar você a começar rapidamente.

No entanto, ao trabalhar com configurações, é necessário pesquisar profundamente e abordar os possíveis erros. Por isso, você precisa entender como isso funciona perfeitamente.

Isso pode ser difícil para os programadores do WordPress que começam a escrever os primeiros plugins. Pode levar dias.

No WordPress 4.7, atualizamos a API de configurações, mas isso não negociou o fato de que a API de configurações pode estar aprimorada no futuro.

Se bem me lembro, é difícil escolher os diferentes elementos HTML quando você cria seções, por exemplo:

File: wp-admin/includes/template.php
1286: function do_settings_sections( $page ) {
1287:   global $wp_settings_sections, $wp_settings_fields;
1288: 
1289:   if ( ! isset( $wp_settings_sections[$page] ) )
1290:       return;
1291: 
1292:   foreach ( (array) $wp_settings_sections[$page] as $section ) {
1293:       if ( $section['title'] )
1294:           echo "<h2>{$section['title']}</h2>\n";
1295: 
1296:       if ( $section['callback'] )
1297:           call_user_func( $section['callback'], $section );
1298: 
1299:       if ( ! isset( $wp_settings_fields ) || !isset( $wp_settings_fields[$page] ) || !isset( $wp_settings_fields[$page][$section['id']] ) )
1300:           continue;
1301:       echo '<table class="form-table">';
1302:       do_settings_fields( $page, $section['id'] );
1303:       echo '</table>';
1304:   }
1305: }

Como vejo o problema com a API de configurações - esta API é antiga.

Qual pode ser a possível melhora. Pseudo-linguagem Você acabou de definir seu formulário assim por meio da API de configurações

   ---
   name: cool-settings.php
   style: default            
   ---
   textfield: First Name|first-name
   textfield: Last Name|last-name
   textarea: About Yourself|about
   image: Your Image|image|(.gif|.jpg|.jpeg|.png)

Eu vi essa sintaxe do Jekyll.

    
por prosti 10.01.2017 / 18:41