¿Es posible limitar los meta cuadros personalizados según la plantilla de página que se use?

2

He buscado por todas partes y no he podido encontrar nada relacionado con el uso de una "plantilla" específica como objetivo para activar cuándo mostrar meta cajas personalizadas ... ¿Es esto posible, y si es así, cómo escribiría esto?

Si las ID de publicación / página son la única opción real posible, ¿sería posible segmentar una ID de página principal en lugar de las ID de página individuales?

EDITAR # 1

Para ayudar a explicar con mayor detalle los detalles del proyecto, voy a describir brevemente por qué a Id le gustaría crear una instancia de metacuadros personalizados solo para plantillas de página particulares ...

La forma en que mi sitio está actualmente configurado es tener un montón de páginas estáticas personalizadas para artistas en una etiqueta de registro. Originalmente, esto estaba perfectamente bien ya que no necesitaban ni solicitaron una solución más dinámica; sin embargo, ahora necesitan actualizar con frecuencia su propia biografía / foto / etc para cada página de perfil de artista, por lo que mi configuración actual no es muy útil. p>

Actualmente, hay una página de artistas de grabación que actúa como un archivo, y todas las páginas de artistas son hijas de esa página.

Además, también necesito permitir widgets personalizados a la barra lateral de cada artista, que es una parte clave para decidir qué dirección tomar.

La única otra alternativa que he considerado pero no estoy seguro de si funcionaría es convertir el archivo del artista grabador en un archivo CPT en su lugar, y luego hacer de cada página de artista una página única personalizada ...

    
pregunta Mr.Brown 01.05.2012 - 06:38

2 respuestas

5

Necesitaba lo mismo, mostrar un metabox basado en la plantilla de página seleccionada, y como el usuario tiene que seleccionar una plantilla de página y guardar, solo así podré saber qué metabox mostraré que terminé mostrando todo y usar algo simple. jQuery para mostrar solo el necesario sin tener que guardar primero, aquí:

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');

el truco es dar su identificación metabox que coincida con el nombre de su archivo de plantilla, puede ver en este ejemplo: full-with.php , showcase.php , no-sidebar-page.php son los nombres de los archivos de tema que definen las plantillas de página y cuando el usuario cambia la plantilla de la página, el metabox mostrado también cambia.

    
respondido por el Bainternet 01.05.2012 - 10:09
3

Lo resolvería así:

1) Campos personalizados avanzados para generar meta cajas personalizadas (que contienen campos personalizados administrados a través de ACF) que se mostrará de forma selectiva según un conjunto de reglas

2) Lógica del widget para mostrar un Widget de texto solo en las páginas que necesita

3) habilitar códigos cortos en el Widget de texto, y compile uno para se adapte a sus necesidades (visualice la información de estilo según algunos criterios)

4) si lo necesita, puede crear funciones personalizadas para usar con Widget Logic, es decir, is_artist('name-of-artist) o is_record_label('name-of-label')

[UPDATE◆

Estas preguntas (duplicados) también pueden ser útiles:

Cuadro meta personalizado que se muestra cuando se elige la plantilla

Alterne el metabox de administración según la plantilla de página elegida

    
respondido por el brasofilo 01.05.2012 - 22:47

Lea otras preguntas en las etiquetas