Si lo que quieres es una plantilla diferente según el Custom Port Type nada de lo que has hecho es necesario.
En el foro puedes encontrar más información sobre los archivos involucrados en el Custom Post Type.
https://es.wordpress.org/support/topic-tag/custom-post-type/
Un saludo
no, quiero el custom post independiente de la plantilla, sin importar que se cambien de plantilla, tenga la misma estructura, con su css etc.
A ver si te entiendo, tú tienes creado tu CPT en un plugin, ¿cierto? Lo que te falta es agregarle estilos a ese plugin con ese CPT, es decir, asociar tu .css al plugin. ¿Entendí bien?
Me falta lo que es la maquetación del archive y single de ese Custom post, porque con el código que he puesto, que es el que uso cuando monto los templates, no me implementa la maquetación que le pongo en los aechivos.
Primero quería comentarte respecto al código, que tienes escrito
//require_once WPP_PLUGIN_DIR . '/archive-custom.php';
y debería ser WP_PLUGIN_DIR
, tienes una letra P de más.
Luego, lo que yo haría, sería asociar mis .css al plugin, y meter un condicional dentro, para que se carguen en función de si es un archive o un custom o lo que necesites.
No me había dado cuenta lo de la doble p, lo que menos me importa ahora es el CSS, pero si que quiero es que me use la plantilla, pero no sé si con el add_filte funciona.
Me refería a plantillas de página, no al tema. Las páginas del Custom Post type las puedes personalizar exactamente como cualquier otro archivo del tema.
Un saludo
ya he conseguido que me agarré la plantilla, ahora creo que el problrema que es otro:
Uncaught Error: Call to a member function have_posts() on null in /home/iglesiae/wp-includes/query.php:767 Stack trace: #
Creo que estoy usando mal la sintaxis
no, disculpa no me ha cogido la plantilla, porque la he dejado en blanco y no me la detecta.
El último error es porque estás haciendo algo como $wp_query->have_posts()
y $wp_query
tiene un valor nulo, eso es lo que dice el mensaje de error y poco más se puede decir sin ver código.
Archivo general del plugin:
<?php
/**
* Plugin Name: Predicaciones
* Plugin URI:
* Description: Crear custom post para configurar predicaciones
* Version: 1.0.1
* Author: Santiago Galán
* Author EMAIL: santiagogalan13@gmail.com
* License: GPL2
*/
define( 'WPP_PLUGIN', __FILE__ );
define( 'WPP_PLUGIN_DIR', untrailingslashit( dirname( WPP_PLUGIN ) ) );
defined( 'ABSPATH' ) or die( '¡Sin trampas!' );
require_once WP_PLUGIN_DIR . '/predicacion-plugin/archive-predicaciones.php';
require_once WP_PLUGIN_DIR . '/predicacion-plugin/single-predicaciones.php';
add_filter('single_template', function($original){
global $post;
$post_type = $post->post_type;
if($post_type=="predicaciones"){
$base_name = 'single-predicaciones.php';
$template = locate_template($base_name);
if ($template && ! empty($template)) return $template;
}
return $original;
});
add_filter( "archive_template", function($original){
global $post;
$post_type = $post->post_type;
if($post_type=="predicaciones"){
$base_name = 'archive-predicaciones.php';
$template = locate_template($base_name);
if ($template && ! empty($template)) return $template;
}
return $original;
});
?>
Archive:
<?php
/**
* The template for displaying archive Predicaciones pages.
*
* Learn more: http://codex.wordpress.org/Template_Hierarchy
*
*/
get_header(); ?>
<div class="row">
<section id="primary" class="content-area">
<div class="large-8 columns">
<main id="main" class="site-main" role="main">
<?php if ( have_posts() ) : ?>
<header class="page-header">
<?php
the_archive_title( '<h1 class="page-title">', '</h1>' );
?>
</header><!-- .page-header -->
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php
/* Include the Post-Format-specific template for the content.
* If you want to override this in a child theme, then include a file
* called content-___.php (where ___ is the Post Format name) and that will be used instead.
*/
echo get_field('descripcion');
?>
<?php endwhile; ?>
<?php gateway_paging_nav(); ?>
<?php else : ?>
<?php get_template_part( 'template-parts/content', 'none' ); ?>
<?php endif; ?>
</main><!-- #main -->
</div><!-- .large-8 -->
</section><!-- #primary -->
<div class="large-3 large-offset-1 columns">
<?php get_sidebar(); ?>
</div><!-- .large-3 -->
</div><!-- .row -->
<?php get_footer(); ?>
Post:
<?php
/**
* The template for displaying archive Predicaciones pages.
*
* Learn more: http://codex.wordpress.org/Template_Hierarchy
*
*/
get_header(); ?>
<div class="row">
<section id="primary" class="content-area">
<div class="large-8 columns">
<main id="main" class="site-main" role="main">
<?php if ( have_posts() ) : ?>
<header class="page-header">
<?php
the_archive_title( '<h1 class="page-title">', '</h1>' );
?>
</header><!-- .page-header -->
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php
/* Include the Post-Format-specific template for the content.
* If you want to override this in a child theme, then include a file
* called content-___.php (where ___ is the Post Format name) and that will be used instead.
*/
get_template_part( 'template-parts/content', get_post_format() );
?>
<?php endwhile; ?>
<?php gateway_paging_nav(); ?>
<?php else : ?>
<?php get_template_part( 'template-parts/content', 'none' ); ?>
<?php endif; ?>
</main><!-- #main -->
</div><!-- .large-8 -->
</section><!-- #primary -->
<div class="large-3 large-offset-1 columns">
<?php get_sidebar(); ?>
</div><!-- .large-3 -->
</div><!-- .row -->
<?php get_footer(); ?>
URL:
http://new.iglesiaevangelicadesegovia.com/predicaciones/
El custom post lo he creado con otro plugin, cuando consiga que funcione esto lo implemento en el plugin.
Así a primera vista no veo nada sospechoso en el código que has puesto, y el enlace a la web muestra otros errores que no tienen que ver con el comentabas.
De todas formas, la verdad es que ese tipo de templates en un plugin me cuesta verlas. No puedes tener un template en un plugin y confiar en que su estructura HTML/PHP vaya a encajar bien en cualquier theme. Es bastante improbable que pase.
Si lo que quieres es que tu custom post type siempre aparezca igual, con una estructura y diseño que tu controles desde el plugin y que siga igual aunque se cambie de theme, yo ofrecería algún método a través de páginas, shortcodes, filtros en the_content
etc. Yo diría que estas estrategias son más parecidas a las que se suelen seguir en las mayoría de plugins, por ejemplo así lo hacen en WooCommerce, bbPress, etc.