web-dev-qa-db-fra.com

Ajouter un modèle au panneau Attributs de page pour les articles et les pages?

Je souhaite conserver mon thème principal en tant que thème actif, mais permettre aux utilisateurs de sélectionner une disposition légèrement différente via le panneau "Attributs de page/publication" . Idéalement, j'aimerais stocker cette mise en page dans le répertoire "styles" de mon thème principal, dans son propre dossier.

MyTheme> styles> My-special-Layout> style.css

Ainsi, dans le panneau "Attributs de page" , je vois un modèle appelé "Ma-spéciale-mise en page" ...

Cependant, j'ai deux problèmes ...

  1. Je n'arrive pas à faire en sorte que le thème "enfant" apparaisse dans le panneau "Attributs de page" . (J'ajoute simplement un dossier sous mon répertoire de thème principal et y place un fichier style.css ayant la valeur "Template: my_main_theme_directory"). Mais je ne vois jamais de modèles apparaître dans le panneau "Attributs de page".

  2. Je ne parviens pas à obtenir le panneau "Attributs de page" dans l'éditeur POST. J'aimerais permettre que le modèle soit appliqué à Posts ainsi que Pages . Comment obtenir ce panneau sur l'éditeur de publication?

3
Scott B

Vous ne faites pas les thèmes pour enfants correctement. Un thème enfant est un thème distinct que tout le monde doit utiliser, mais il repose sur un autre thème pour toutes les parties de modèle qu'il ne fournit pas. Ce que vous voulez, ce sont des modèles:

http://codex.wordpress.org/Theme_Development#Defining_Custom_Templates

Fondamentalement, créez simplement un nouveau fichier de thème dans le répertoire racine du thème (par exemple, foobar.php), écrivez ceci en haut:

/*
Template Name: Foobar
*/

Cela vous donnera un nouveau modèle appelé Foobar (évidemment, changez Foobar en ce que vous voulez. C'est le nom qui apparaîtra dans le menu déroulant de la page de l'éditeur).

À partir de maintenant, WordPress ne prend en charge que les modèles pour les pages et les types de publication personnalisés, pas les publications. Il existe des moyens de pirater cela, par exemple, rechercher une méta de publication sur des publications et la tirer sur un modèle incluent:

function my_post_templater($template){
  if( !is_single() )
    return $template;
  global $wp_query;
  $c_template = get_post_meta( $wp_query->post->ID, '_wp_page_template', true );
  return empty( $c_template ) ? $template : $c_template;
}

add_filter( 'template_include', 'my_post_templater' );

function give_my_posts_templates(){
  add_post_type_support( 'post', 'page-attributes' );
}

add_action( 'init', 'give_my_posts_templates' );

Si vous placez ce code dans le fichier functions.php de votre thème, cela devrait fonctionner (tant que vous avez réellement des modèles personnalisés dans votre dossier de thèmes).

Pour plus d'informations sur les thèmes pour enfants, lisez ce qui suit:

http://codex.wordpress.org/Child_Themes

4
John P Bloch