Estoy escribiendo un complemento que crea un tipo de publicación personalizado llamado "my_plugin_lesson":
$args = array (
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'lessons', 'with_front' => false)
);
register_post_type ('my_plugin_lesson', $args);
El tipo de publicación personalizada tiene un archivo, y la URL del archivo es:
http://example.com/lessons
Quiero personalizar el aspecto de este archivo; Quiero enumerar las publicaciones en formato de tabla, en lugar del archivo estándar de publicaciones de blog de WordPress. Entiendo que se puede crear una plantilla de archivo personalizada en el tema haciendo el archive-my_plugin_lesson.php
archivo; Sin embargo, me gustaría que el complemento funcione con cualquier tema.
¿Cómo puedo alterar el contenido de la página de archivo sin agregar o modificar archivos de tema?
Editar:
entiendo que podría usar el archive_template
gancho de filtro. Sin embargo, todo lo que hace es reemplazar la plantilla del tema, que aún debe ser específica del tema. Por ejemplo, casi todas las plantilla de temas necesitará los get_header
, get_sidebar
y get_footer
funciones, pero lo que si el identificador del contenido de <div>
ser? Esto es diferente en cada tema.
Lo que me gustaría hacer es reemplazar el contenido en sí con mi propio contenido y usarlo en lugar de la página de archivo para mi tipo de publicación personalizada.
fuente
Puede usar el
archive_template
gancho para procesar el contenido de la plantilla de archivo de un tema, utilizando el esquema a continuación, pero obviamente solo podrá procesar una fracción de los temas, dado que una plantilla puede contener básicamente cualquier cosa antigua. .El esquema consiste en cargar la plantilla en una cadena (
$tpl_str
) en elarchive_template
filtro, sustituir su contenido, incluir la cadena (usando el trucoeval( '?>' . $tpl_str );
) y luego devolver un archivo en blanco para queinclude
aparezca "wp-includes / template-loader.php" se convierte en un no-op.A continuación se muestra una versión pirateada del código que uso en un complemento, que apunta a plantillas "clásicas" que usan
get_template_part
y está más preocupado por el procesamiento de plantillas individuales que por el archivo, pero debería ayudarlo a comenzar. La configuración es que el complemento tiene un subdirectorio llamado "plantillas" que contiene un archivo en blanco ("null.php") y plantillas de contenido (por ejemplo, "content-single-posttype1.php", "content-archive-postype1.php") así como una plantilla alternativa "single.php" para el caso único, y utiliza una versión personalizada deget_template_part
ese aspecto en este directorio.La costumbre
get_template_part
:Para completar, aquí está el recurso "single.php", que usa la costumbre
get_template_part
:fuente
He estado reflexionando sobre la misma pregunta, y esta es la solución hipotética que se me ocurrió:
Luego de la activación del complemento, cree una página usando wp_insert_post con el nombre como tipo de publicación y el contenido como código corto.
Puede proporcionar opciones en el código abreviado para consideraciones de estilo adicionales, o agregar clases al contenedor de publicación para que coincidan con los estilos específicos del tema o personalizados. El usuario también puede agregar contenido adicional antes / después del ciclo editando la página.
fuente
Puedes usar el filtro
single_template
. Un ejemplo básico tomado del Codex :fuente
archive_template
, pero no creo que esto funcione para lo que estoy tratando de hacer. He editado mi pregunta con más información.