É possível limitar caixas meta personalizadas dependendo de qual modelo de página é usado?

2

Eu pesquisei e não consegui encontrar nada sobre o uso de um "modelo" específico como um alvo para acionar quando mostrar caixas meta personalizadas ... Isso é possível, e se sim, como você explicaria isso?

Se os IDs de postagem / página forem a única opção viável, seria possível segmentar um ID de página pai em vez de IDs de página individuais?

EDIT # 1

Para ajudar a explicar melhor as particularidades do projeto, vou descrever brevemente por que Id gostaria de instanciar caixas meta personalizadas para apenas modelos de página específicos ...

A forma como o meu site está configurado atualmente é ter um monte de páginas estáticas personalizadas para artistas em uma gravadora. Originalmente, isso estava perfeitamente bem, já que eles não precisavam e / ou solicitavam uma solução mais dinâmica - no entanto, agora eles precisam atualizar frequentemente suas próprias fotos / etc / bi para cada página de perfil do artista, tornando minha configuração atual pouco útil. p>

Atualmente, há uma página Artistas de gravação que funciona como um arquivo e, em seguida, todas as páginas do artista são filhas dessa página.

Além disso, também preciso permitir widgets personalizados para cada barra lateral de artistas, o que é uma parte essencial para decidir em qual direção seguir.

A única outra alternativa que eu considerei, mas não tenho certeza se funcionaria, é converter o arquivo do artista de gravação em um arquivo CPT, e então fazer de cada página de artista uma página única personalizada ...

    
por Mr.Brown 01.05.2012 / 06:38

2 respostas

5

Eu precisava a mesma coisa, mostrando uma METABOX com base no modelo de página selecionada, e uma vez que o usuário tem que selecionar um modelo de página e salvar e só então eu poderia saber que METABOX para mostrar i acabou mostrando tudo e usar algumas simples jQuery para mostrar apenas o necessário sem ter que salvar primeiro, aqui:

function custom_metabox_per_template() {
    global $pagenow,$typenow;
    if ( is_admin() && in_array( $pagenow, array( 'post.php', 'post-new.php' ) ) && $typenow == 'page') {
        $script = <<< EOF;
<script type='text/javascript'>
    jQuery(document).ready(function($) {

        //hide all metaboxs
        function hide_all_custom_metaboxes(){
            $('#full-with.php').hide();
            $('#showcase.php').hide();
            $('#no-sidebar-page.php').hide();
        }

        //show a metabox
        function show_custom_metabox(meta_id){
            var selector = "#"+meta_id;
            if( $(selector).length)
                $(selector).show();
        }

        //first hide all metaboxes
        hide_all_custom_metaboxes();

        //then check for selected page template and show the corect metabox
        var current_metabox = $('#page_template').val();
        show_custom_metabox(current_metabox);

        //and last listen for changes update when needed
        $('#page_template').bind("change", function(){
            hide_all_custom_metaboxes();
            show_custom_metabox($('#page_template').val());
        });
    });
</script>
EOF;
        echo $script;
    }
}
add_action('admin_footer', 'custom_metabox_per_template');

o truque é dar a seu id METABOX que corresponda ao nome do arquivo de modelo, você pode ver neste exemplo: full-with.php , showcase.php , no-sidebar-page.php são os nomes dos arquivos de tema que definem os modelos de página , e quando eu usuário muda o modelo de página, o metabox mostrado também muda.

    
por Bainternet 01.05.2012 / 10:09
3

Eu resolveria assim:

1) Campos personalizados avançados para gerar caixas meta personalizadas (contendo campos personalizados gerenciados pelo ACF) que será exibido seletivamente de acordo com um conjunto de regras

2) Widget Logic para mostrar um widget de texto apenas nas páginas que você precisa

3) ative códigos de acesso no Widget de Texto e crie um para atender às suas necessidades (exibir informações estilizadas de acordo com alguns critérios)

4) se você precisar, você pode criar funções personalizadas para usar com o Widget Logic, por exemplo, is_artist('name-of-artist) ou is_record_label('name-of-label')

[UPDATE]

Essas perguntas (duplicatas) também podem ser úteis:

Caixa meta personalizada mostrada quando o modelo é escolhido

Alternar o metabox do administrador com base no modelo de página escolhido

    
por brasofilo 01.05.2012 / 22:47

Tags