web-dev-qa-db-ja.com

マルチサイトでのヘッダーコンポーネントの共有

私はマルチサイトプラットフォームを持っていて、私はメインにあるメニューを異なるフォルダにある他のサイトと共有しようとしています。

これはメインのPHPタグで、他のヘッダにも必要なメニューをプルします。

<?php dokan_header_user_menu(); ?>

/site2のヘッダーにあるようにそれを使用しようとしました、そして、それはうまくいきませんでした。私もこれを試しました:

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

まだ運がありません。どんなヒントでも大歓迎です。

乾杯!

1
Dave_O

この関数をプラグインにアウトソーシングする

特定の機能を複数のテーマで利用できるようにしたい場合は、プラグインにまとめてネットワーク全体で有効にするのが最善です。

関数を探す

利用可能なテーマで機能を見つけます。これで2つの可能性があります。

  • 現在のテーマから関数を削除します
  • 他のテーマに使用するためにこの関数を複製してください(推奨)

プラグインを作成する

あなたのpluginsディレクトリ、f711-custom-menu-function.php、またはあなたがあなたの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
*/

今すぐあなたのプラグインは使用する準備ができています。

プラグインを作成する

テーマのメニュー機能をコピーして、次のように特定のプレフィックスを付けます。

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

プラグインを有効にする

これは自己説明的です。ネットワーク全体で有効にしてください。

さまざまなテーマで使う

これで、ネットワークで利用可能なすべてのテーマで、まったく同じ関数を使ってf711_dokan_header_user_menu()を呼び出すことができます。

掃除

関数がどこから来ているのかあなた自身のオリジナルのテーマを取り、そして新しいプラグイン関数を使用するようにヘッダを変更してください。その後、冗長を避けるために古いテーマ固有の関数を削除することができます。

1
fischi

これは古い質問です。これは、WORDPRESS MULTISITE MENUをすべてのネットワークサイトで共有するためのもう1つの簡単な解決策です。

メニューだけでなく、同じ方法を使用して、他のウィジェット以外のものをすべてのネットワークサイトで共有できます。

これが解決策です: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); 
6