web-dev-qa-db-fra.com

Se connecter pour remplacer les zones de la barre latérale/widget

L'objectif: remplacer la barre latérale sur tous les sites de mon réseau par du contenu chargé à partir d'un plugin, sur tous les thèmes.

J'ai besoin d'un moyen de surcharger la barre latérale/zone principale du widget sur tous les sites de mon réseau.

J'ai écrit un plugin qui génère la barre latérale avec un appel de fonction, mais comment puis-je obtenir ce contenu pour qu'il remplace complètement la barre latérale? appeler un hook lorsque get_sidebar() se produit, ne pas remplacer cette action.

add_action('get_sidebar', 'my_get_sidebar', 11);

De plus, cela fait apparaître ma barre latérale sur toutes les barres latérales de la page. Je souhaite seulement qu'elle écrase la barre principale (la barre latérale?) Et laisse les autres vides.

1
Dunhamzzz

Vous devriez envisager de faire en sorte que vos barres latérales utilisent la fonction d'action de suppression.

Ensuite, vous pouvez supprimer une barre latérale et la remplacer par une fonction de plusieurs façons.

Par exemple (ceci utilise une conditionnelle basée sur une page appelée une page .

function change_sidebar_yay() {
    if ( is_single('some-page') ) {
        remove_action( 'old_sidebar', 'your_function' ); //this is sidebar you want removed
        add_action('get_sidebar', 'my_get_sidebar', 11);
    }
}

http://codex.wordpress.org/Function_Reference/remove_action

old_sidebar et your_function sont le nom et le nom de la fonction de la barre latérale que vous souhaitez supprimer. Vous devrez rechercher dans votre thème les valeurs réelles utilisées par l'auteur du thème (habituellement dans functions.php mais pas toujours).

De même, si le thème est codé en dur ou ne crée pas de barres latérales à l'aide de points d'ancrage/d'actions, cela ne fonctionnera pas.

1
Wyck

pas sûr, mais peut-être que le plugin Logic Widget peut être un bon point de départ pour développer votre fonction?

0
user2015