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 ...
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!