web-dev-qa-db-fra.com

Voir la catégorie dans l'aperçu du thème Customizer

Je construis un thème pour lequel le personnaliseur de thème modifie les couleurs, les tailles, etc. et dispose également de la possibilité de choisir une catégorie et un style spécifique.

Comment puis-je afficher cette catégorie dans l'aperçu (uniquement lorsque l'utilisateur modifie les options correspondantes) au lieu de la page d'accueil/page d'accueil par défaut affichée par défaut?

MODIFIER

Je peux accéder à la fenêtre d'aperçu avec personnaliser_preview_init , mais je ne peux pas appliquer wp_redirect , qui, je suppose, pourrait être un moyen.

3
Alvaro

J'ai fini avec cette solution:

1. Demander un fichier supplémentaire contenant les points d'ancrage uniquement dans l'aperçu du thème.

function mytheme_customizer_live_preview() {
    require_once('library/preview.php');
}
add_action( 'customize_preview_init', 'mytheme_customizer_live_preview' );

2. Ce que je devais faire, c'est modifier la requête comme je le ferais normalement dans la page, donc faites-le simplement dans l'aperçu (dans preview.php):

function modify_query($query) {

    $category = get_theme_mod( 'mytheme' )['categories'][0];

    $query->set('cat', $category);

    return $query;

}
add_filter('pre_get_posts', 'modify_query', 10);
0
Alvaro

Si je comprends bien votre objectif, vous pourrez alors sélectionner un élément à l’intérieur du personnaliseur; il répertorie les catégories et l’utilisateur peut les utiliser pour les enregistrer dans les paramètres de votre thème.

Si vous souhaitez améliorer le Customizer pour les catégories, utilisez cette classe à partir de ce dépôt ici. Incluez le fichier et indiquez la classe par défaut. Vous pouvez facilement mettre en œuvre une sélection pour les catégories de l'installation. A l'intérieur du fichier de ce référentiel se trouvent deux liens vers Gist avec un exemple d'utilisation, mais pour une autre classe du référentiel. Je pense que c'est clair et de la même manière sur toutes les extensions pour le Customizer.

1
bueltge

Il suffit d’ajouter un javascript qui s’active uniquement dans l’aperçu en direct et la redirection: http://www.jquery4u.com/snippets/jquery-redirect-web-page/

en tant que solution avancée, vous pouvez créer une fonction js fonctionnant de manière asynchrone avec wp.customize. Vous pouvez inspecter mon thème http://theme.firmasite.com/ pour un exemple d'utilisation.

0
Ünsal Korkmaz

Voici une approche que j'avais l'habitude de montrer aux utilisateurs lorsqu'ils visionnaient le site via l'aperçu du personnaliseur de thèmes:

global $wp_customize;
if( is_user_logged_in() && isset($wp_customize) ) {
  // Show "categories" or things in the Customizer Previewer only
}

Cela rend les modèles un peu plus compliqués mais, comme vous l’avez probablement découvert, il n’ya pas beaucoup de documentation/développement sur Theme customizer: /

0
jkhedani