web-dev-qa-db-fra.com

modifier un modèle et y ajouter jQuery

Il existe un modèle de page appelé "Tous les signets" pour afficher tous les liens groupés par catégorie. Je veux le modifier de 2 manières:

  • chaque catégorie de liens doit être pliable/extensible en cliquant sur l'en-tête de la catégorie
  • le modèle doit accepter une liste de catégories à inclure ou à exclure

En ce qui concerne la partie compressible, je suppose qu’il suffit d’ajouter une classe à chaque en-tête de catégorie pour que mon code jQuery puisse les affecter. Pour la catégorie limitante, supposons que j’ai besoin d’un moyen de passer des paramètres au modèle. Cependant, je suis un noob complet à WP et je ne sais pas

  • où mettre le code jQuery
  • s'il faut ajouter la classe au modèle ou créer un nouveau modèle
  • où stocker un nouveau modèle afin qu'il soit disponible pour Pages
  • si les modèles peuvent prendre des paramètres ou si un modèle doit faire référence à une fonction personnalisée PHP
  • où stocker les fonctions personnalisées PHP

Cela fait un moment que je me promène dans WordPress.org et que je deviens de plus en plus frustré. Je serais reconnaissant si quelqu'un pouvait répondre aux questions ci-dessus et peut-être m'indiquer une bonne explication de la structure de code WP.

Merci!

Version: WP 3.1
Theme: Suffusion 3.7.7
2
dnagirl

Plutôt que de modifier le modèle, puisque vous aurez de toute façon besoin de jQuery, vous pouvez le faire.

Ajouter à la functions.php

add_action( 'wp_enqueue_scripts', 'blogroll_toggles' );
function blogroll_toggles() {
    if( is_page_template( 'bookmarks.php' ) )
        wp_enqueue_script( 'blogroll-toggle', get_bloginfo( 'stylesheet_directory' ) . '/blogroll-toggle.js', array( 'jquery' ) );
}

Ou créez un nouveau dossier dans le dossier wp-content/plugins/, créez un fichier dans le nouveau dossier, par exemple. blogroll-plugin.php , et ajoutez ce qui suit.

<?php
/*
    Plugin Name: Suffusion Blogroll Toggles
*/
add_action( 'wp_enqueue_scripts', 'blogroll_toggles' );
function blogroll_toggles() {
    if( is_page_template( 'bookmarks.php' ) )
        wp_enqueue_script( 'blogroll-toggle', plugins_url( '/blogroll-toggle.js', __FILE__ ), array( 'jquery' ) );
}

La fonction se met en file d'attente dans le script chaque fois qu'une page est chargée avec le modèle de marque-pages attaché. jQuery est défini comme une dépendance du script, il n’est donc pas nécessaire de le charger séparément.

Créez un fichier dans le dossier theme (ou plugin) et appelez-le blogroll-toggle.js , puis placez le code suivant dans ce fichier.

jQuery(document).ready( function($) {
    // Hide the blogroll lists
    $('div.entry ul.blogroll').hide();
    // Attach a click function to the headings
    $('div.entry h4').click( function() {
            // Make sure we're targeting the blogroll heading, if not, stop here(do nothing)
        if( !$(this).next('ul.blogroll') )
            return false;
            // Toggle the blogroll list that follows the heading
        $(this).next('ul.blogroll').toggle();
    });
});

JQuery n’a pas été testé, mais cela devrait fonctionner (j’ai déjà fait basculer des dizaines de fois).

NOTE: Si vous utilisez un plugin, n'oubliez pas de l'activer comme n'importe quel autre plugin.

Tout problème avec le code, faites le moi savoir. :)

3
t31os