Je suis en train de créer mon premier thème et j'utilise Quark comme thème de départ.
Je voudrais que le thème ait diverses options, l'une étant la sélection d'en-tête. (Disons 5 en-têtes différents - lorsqu'il est sélectionné, l'en-tête indique le site entier.)
J'aimerais également implémenter divers en-têtes dont le code est disponible sur codepen, mais ce qui me pose problème, c'est de donner aux utilisateurs la possibilité de sélectionner l'en-tête de leur choix.
Supposons que je veuille d'abord mettre en oeuvre ce menu: http://codepen.io/WhiteWolfWizard/pen/CJLeu .
J'ai lu la fonction Codex for get header et j'ai également vu ceci:
<?php
if ( is_home() ) :
get_header( 'home' );
elseif ( is_404() ) :
get_header( '404' );
else :
get_header();
endif;
?>
Cela ne convient pas à ce que j'essaie de faire, car il affiche un en-tête page par page.
Je me suis donc demandé: où devrait figurer le code des différents en-têtes et comment puis-je donner aux utilisateurs la possibilité de sélectionner les en-têtes? (avec l'arborescence des options, l'API Customizer ou une meilleure solution si vous en avez)
Merci
PS: Je suis un débutant à cela.
Vous avez donc d’abord besoin d’options de personnalisation. Vous pouvez mettre ceci dans customizer.php
et inclure ce fichier dans votre functions.php
ou vous pouvez simplement le mettre directement dans functions.php
.
add_action('customize_register', 'mytheme_customize_register');
function mytheme_customize_register( $wp_customize ) {
/**
------------------------------------------------------------
SECTION: Header
------------------------------------------------------------
**/
$wp_customize->add_section('section_header', array(
'title' => esc_html__('Header', 'mytheme'),
'description' => esc_attr__( 'Choose one of three different Header Styles', 'mytheme' ),
'priority' => 1,
));
/**
Header Styles
**/
$wp_customize->add_setting( 'header_styles', array(
'default' => '',
));
$wp_customize->add_control( 'header_styles', array(
'label' => esc_html__( 'Header Styles', 'mytheme' ),
'section' => 'section_header',
'type' => 'select',
'choices' => array(
'style_1' => esc_html__('Header 1', 'mytheme'),
'style_2' => esc_html__('Header 2', 'mytheme'),
'style_3' => esc_html__('Header 3', 'mytheme'),
),
));
}
Cela vous donnera un menu déroulant dans votre personnaliseur.
Avec cela, vous pouvez, où que se trouve votre balise d’élément d’entête <header>
, ajoutez un style ou même un fichier séparé si vous le souhaitez.
Supposons que votre en-tête se trouve dans un fichier appelé header_style_1.php
situé dans un dossier partials
et qu'il est inclus dans le fichier header.php
en tant que
get_template_part('partials/header_style_1);
Vous pouvez ajouter des fichiers header_style_2.php
et header_style_3.php
et dans votre header.php
, ajoutez simplement:
$header_style = get_theme_mod('header_styles', 'style_1');
get_template_part('partials/header_'.$header_layout);
Cela récupérera tous les modèles que vous avez créés pour votre en-tête.
J'espère que cela t'aides.
Avec Option Tree, vous pouvez l'utiliser comme suit:
Disons que vous allez fournir 5 conceptions d'en-tête différentes. Créez 5 fichiers d'en-tête:
Maintenant, vous pouvez le vérifier comme:
if (ot_get_option('your_header_selection_key') == 'one'){
get_header();
} elseif (ot_get_option('your_header_selection_key') == 'two'){
get_header('two');
} elseif (ot_get_option('your_header_selection_key') == 'three'){
get_header('three');
} elseif (ot_get_option('your_header_selection_key') == 'four'){
get_header('four');
} elseif (ot_get_option('your_header_selection_key') == 'five'){
get_header('five');
}
Vous pouvez envelopper ces codes dans une fonction dans functions.php
et appeler à partir de modèles de page au lieu de les écrire sur chaque fichier de modèle.
Ceci est juste une idée. Vous pouvez utiliser l'API Customizer avec cette même idée, si vous n'utilisez pas Option Tree.