web-dev-qa-db-fra.com

Partage des composants d'en-tête sur plusieurs sites

J'ai une plate-forme multi-sites et j'essaie de partager le menu que j'ai en général avec d'autres sites situés dans des dossiers différents.

Ceci est la balise PHP dans le menu principal qui ouvre le menu dont j'ai également besoin dans l'en-tête d'un autre:

<?php dokan_header_user_menu(); ?>

J'ai essayé de l'utiliser tel quel dans l'en-tête de /site2 et cela n'a pas fonctionné. J'ai aussi essayé ceci:

<?php
    include $_SERVER['DOCUMENT_ROOT']."site.com/wp-content/themes/dokan/header.php";
?>

toujours pas de chance. Tous les conseils seront grandement appréciés.

À votre santé!

1
Dave_O

Externaliser cette fonction dans un plugin

Si vous souhaitez qu'une fonction spécifique soit disponible sur plusieurs thèmes, il est préférable de l'avoir dans un plugin et de l'activer à l'échelle du réseau.

Trouver la fonction

Localisez la fonction dans le thème où elle est disponible. Vous avez maintenant deux possibilités:

  • Supprimer la fonction du thème actuel
  • Faites une copie de cette fonction à utiliser pour d'autres thèmes (recommandé)

Créer le plugin

Créez un fichier dans votre répertoire de plugins, f711-custom-menu-function.php ou ce que vous voulez que votre plugin soit appelé.

Dans ce fichier, vous créez l'en-tête du plugin:

/*
Plugin Name: F711 Menu Function 
Plugin URI:  http://yourdomain.com
Description: Using the menu function across different themes in my network
Version:     1.0
Author:      Dave_O
Author URI:  http://wordpress.stackexchange.com/users/58774/dave-o
License:     GPL2
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Domain Path: /languages
Text Domain: f711-menu-function
*/

Votre plugin est maintenant prêt à être utilisé.

Remplir votre plugin

Copiez la fonction de menu de votre thème et attribuez-lui un préfixe spécifique, par exemple, comme ceci:

function f711_dokan_header_user_menu() {
    // insert your functionality from the original function here
}

Activer votre plugin

Ceci est auto-explicatif. Assurez-vous simplement de l'activer à l'échelle du réseau

Utilisation dans différents thèmes

Vous pouvez maintenant appeler f711_dokan_header_user_menu() dans tous les thèmes disponibles sur votre réseau, en utilisant exactement la même fonction.

Nettoyer

Prenez votre thème d'origine d'où provient la fonction et modifiez l'en-tête pour utiliser la nouvelle fonction de plug-in. Ensuite, vous pouvez supprimer l'ancienne fonction spécifique afin d'éviter les redondances.

1
fischi

C'est une vieille question, voici une autre solution simple pour le partage de WORDPRESS MULTISITE MENU sur tous les sites du réseau,

Non seulement menu, vous pouvez utiliser la même méthode pour partager autre chose que des widgets sur tous les sites du réseau.

voici la solution: Editez votre Header.php

//store the current blog_id - Use this function at the start of the function that you want to share

global $blog_id;
$current_blog_id = $blog_id;

//switch to the main blog which will have an id of 1
switch_to_blog(1);

//output the WordPress navigation menu - incase of menu-sharing use this

wp_nav_menu( 
   //add your arguments here
);

//switch back to the current blog being viewed - before ending of the function

switch_to_blog($current_blog_id); 
7
Muhammad Abdullah