it-swarm-pt.com

Como adicionar novos tipos de opção à árvore de opções?

Eu estou usando a árvore de opções no modo de tema e modo de tema filho e estou tentando adicionar novos tipos de opção. Os novos tipos de opção serão baseados fora do tipo de opção pós-seleção, mas só listarão postagens de uma categoria específica.

Eu criei um novo arquivo e adicionei-o à matriz de arquivos a serem incluídos que começa na linha 178 do ot-loader.php. No novo arquivo eu cortei e colei o tipo de opção de pós-seleção que começa na linha 905 de /includes/ot-functions-options-type.php. Você pode ver este novo arquivo aqui .

No meu tipo de opção de seleção de post, eu adicionei um slug exclusivo ao nome da função. Eu também coloquei essa lesma na classe css .type-post-select para o wrapper de configuração externa de formato. Na matriz post post de consulta, adicionei um parâmetro de categoria.

Então eu adicionei meu novo tipo de opção de pós-seleção às minhas opções de tema, esperando que ele mostrasse apenas postagens na categoria que eu tinha definido. Mostrou as postagens de todas as categorias. Curiosamente, a opção foi envolvida em .type-post-select. Eu também criei um post-select regular, que não tinha o css modificado.

Como experiência, cansei de adicionar o parâmetro de categoria à opção de pós-seleção original da mesma forma e ele funcionou exatamente como eu esperava - exibindo apenas postagens dessa categoria. Infelizmente, preciso criar 6 novas post-selects, cada uma mostrando postagens de uma categoria diferente.

Claramente estou perdendo um passo, mas para a vida de mim não consigo encontrá-lo. Procurei em outro lugar que os tipos de opções precisem ser registrados ou algo assim, mas não consegui encontrá-lo ...

7
JPollock

O que você está tentando fazer pode ser realizado sem nunca editar os arquivos principais no OptionTree. Adicione as funções do tipo de opção personalizada aos seus temas functions.php e o código a seguir também.

/**
 * Filter to add custom option types.
 *
 * @param     array     An array of option types.
 * @return    array
 */
function add_custom_option_types( $types ) {

  $types['post_select_a_1'] = 'Post Select option type. (_a_1)';
  $types['post_select_a_2'] = 'Post Select option type. (_a_2)';
  $types['post_select_a_3'] = 'Post Select option type. (_a_3)';
  $types['post_select_a_4'] = 'Post Select option type. (_a_4)';
  $types['post_select_a_5'] = 'Post Select option type. (_a_5)';
  $types['post_select_a_6'] = 'Post Select option type. (_a_6)';

  return $types;

}
add_filter( 'ot_option_types_array', 'add_custom_option_types' );

Isso carregará automaticamente suas funções no OptionTree e você não precisará editar nenhum dos arquivos principais. Quando você adiciona novas opções, existem dois requisitos. Um, todas as funções devem ser prefixadas com ot_type_. Em segundo lugar, ao adicionar à matriz de opções que as novas chaves de matriz precisam para corresponder ao nome da função menos ot_type_, você pode usar - ou _ ao criar a chave. Portanto, se você tiver uma função personalizada chamada ot_type_super_awesome, poderá adicioná-la à matriz filtrada com:

$types['super_awesome'] = 'Super Awesome';

ou

$types['super-awesome'] = 'Super Awesome';

Espero que isso elimine qualquer confusão. Em uma nota lateral, há dois ot_type_post_select_a_5 no arquivo que você criou e suponho que o último deve ser ot_type_post_select_a_6. Felicidades!

4
Derek Herman