Me gustaría ofrecer mi tipo de publicación personalizada como un complemento, para que las personas puedan usarlo sin tocar su carpeta de temas. Pero las plantillas de tipo de publicación personalizadas, como single-movies.php, residen en la carpeta del tema. ¿Hay alguna manera de hacer que WP verifique un single-movies.php en la carpeta del complemento? ¿Enganchando una función en la Jerarquía de Filer ? O get_template_directory (); ?
plugins
custom-post-types
themes
directory
nathanbweb
fuente
fuente
get_query_template()
función. Es un enlace variable, por lo que la primera parte{$type}_template
cambia según el parámetro que se pasa a esa función. Vea wp-includes / template.php para ver algunos comunesadd_filter( 'single-movies_template', 'my_custom_template' );
como en el tutorial vinculado. (Esta pregunta está cerrada a nuevas respuestas, por lo que no puedo agregarla por sí sola.)PLUGIN_PATH
conplugin_dir_path( __FILE__ )
y luego eliminar la primera barra diagonal de su nombre de archivo. El camino completo se vería así:return plugin_dir_path( __FILE__ ) . 'Custom_File.php';
Respuesta actualizada
Versión más limpia y corta.
Vieja respuesta
Se agregó una verificación para una plantilla específica de tipo de publicación personalizada en la carpeta de temas a la respuesta @Brainternet.
Ahora puede permitir que los usuarios del complemento copien la plantilla de su complemento a su tema para anularlo.
Con este ejemplo, las plantillas deben estar en el directorio raíz tanto del complemento como del tema.
fuente
locate_template
lugar deget_stylesheet_directory
sonidos como la opción más limpia para mí (que se encuentra aquí: code.tutsplus.com/tutorials/… ).Me gustaría señalar que cuando utiliza el método de filtro para esto, es extremadamente importante priorizar el filtro de esta manera:
Si no hace esto, a veces WP intentará volver a verificar después de este filtro. Estuve arrancándome el pelo por eso durante 2 horas.
fuente
Hay una manera mucho mejor de hacerlo que estoy usando para mis complementos.
Use el
template_include
gancho de filtro para cargar el código anterior.fuente
Gracias a esta página pude resolver la misma pregunta para mí.
Como referencia, esto es lo que terminé con:
el {$ type} _template filter hook no funcionó para mí
fuente
Lo anterior es una gran respuesta, pero la comprobación de $ single var permite que la plantilla anule una plantilla si el tema / tema secundario proporciona una.
fuente