web-dev-qa-db-fra.com

Comment utiliser un modèle dédié pour le type de message personnalisé à partir d'un plugin?

Je travaille sur ce didacticiel sur les types de publication personnalisés (dans un plugin), dans lesquels l'auteur montre comment utiliser forcer l'utilisation d'un modèle dédié pour le type de publication personnalisée. L'auteur déclare ainsi:

Le code (ci-dessous) recherche le modèle single-movie-reviews.php dans le répertoire du thème actuel. S'il n'est pas trouvé, il recherche dans le répertoire du plugin le modèle que nous fournissons en tant que partie du plugin. Le hook template_include a été utilisé pour modifier le comportement par défaut et appliquer un modèle spécifique.

Étape 1: Ajout de ce code dans mon fichier plugin-name.php} _

add_filter( 'template_include', 'include_reviews_template', 1 );
function include_reviews_template(){
    if ( get_post_type() == 'reviews' ) {
        if ( is_single() ) {
            // checks if the file exists in the theme first,
            // otherwise serve the file from the plugin
            if ( $theme_file = locate_template( array( 'single-movie-reviews.php' ) ) ) {
                    $template_path = $theme_file;
                } else {
                    $template_path = plugin_dir_path( __FILE__ ) . '/templates/single-movie-reviews.php';
            }
        }
    }
    return $template_path;
}

Étape 2: Créez le fichier single- {custom-post-type} .php.

Ensuite, j'ai créé le fichier single-movie-reviews.php requis et l'a ajouté au répertoire '/my-plugin/templates/'.

L'auteur ajoute ce qui suit:

Remarque: Vous devez créer une nouvelle page à partir du tableau de bord à l'aide du modèle nouvellement créé.

Les ​​problèmes

  1. Le modèle de page n'apparaît PAS dans le tableau de bord
  2. Lorsque j'ai visité le message que j'ai créé à l'aide du type de message personnalisé, il ne montre pas le message utilisant le modèle de page du plug-in. Cependant ... toutes les deux pages (c'est-à-dire les pages PAS utilisant le CPT) affiche maintenant un écran blanc et blanc (comme s'il ne trouvait pas le modèle approprié à utiliser).

Alors qu'est-ce que je fais mal?

S'il vous plaît donnez votre avis

3
sleeper

Changer cette ligne:

function include_reviews_template(){

Pour ça:

function include_reviews_template( $template_path ) {

Lorsque get_post_type() == 'reviews' est false, vous retournez une variable non définie ($template_path). Cette modification devrait envoyer la valeur transmise à la fonction par WordPress.

3
Charles Clarkson