web-dev-qa-db-fra.com

Enregistrer un modèle de page à partir d'un plugin

J'essaie de comprendre comment enregistrer correctement un modèle de page (et tous les actifs associés, tels que CSS et Images) à partir d'un plugin. En gros, j'ai créé une page de destination que je souhaite vivre en dehors du thème afin de pouvoir l'utiliser sur plusieurs sites Web.

Mon code était le suivant:

add_filter( 'page_template', 'custom_page_template' );
function custom_page_template( $page_template )
{
    $page_template = dirname( __FILE__ ) . '/custom-page-template.php';
    return $page_template;
}

Mais je ne vois pas le modèle de page dans WordPress.

1
dcolumbus

Vous comprenez mal ce que fait page_template. Il ne crée pas de nouveau modèle que vous "afficherez" quelque part et que vous pourrez utiliser. Il remplace le modèle page.php fourni par le thème.

Je pense que ce que vous voulez, c'est template_redirect:

function custom_page_template( $page_template ) {
  if (is_home()) {
    get_header();
    echo 'do stuff';
    get_footer();
  }
}
add_filter( 'template_redirect', 'custom_page_template' );

Ou template_include:

function custom_page_template( $page_template ) {
  if (is_home()) {
    $page_template = plugin_dir_path( __FILE__ ) . 'custom-page-template.php';
    return $page_template;
  }
}
add_filter( 'template_include', 'custom_page_template' );
1
s_ha_dum