web-dev-qa-db-ja.com

すべてのマルチサイトブログで同じフッター

すべてのネットワークサイトでメインサイトフッター(ブログID = 1)を使用する方法はあります。すべてのネットワークで同じフッターを使用したいです。メインサイトで私はテーマを得ましたそしてユーザーによって作成された子サイトは別のテーマを得ました。

基本的に私は両方のテーマで同じフッターを使いたいが、メインサイトだけから全てのウィジェットを管理したい。

Switch_to_blogまたはそれに似たものを使ってこれを行うことは可能ですか?

更新:私は試したが、運はありません:

<?php
    global $switched;
    switch_to_blog(1);

     get_footer(); 

restore_current_blog();
?>
2
chifliiiii

まず第一に、複数のテーマに同じfooter.phpファイルを使用することは問題があります。テーマが異なれば、このファイルで閉じる必要のある要素が異なるからです。

もっと良い方法は、すべてのfooter.phpファイルで呼び出すカスタム関数を作成することです。このような関数はwp-content/mu-plugins内のファイルに配置するのが最善であるため、すべてのサイトで最初にロードされます。

function my_custom_footer() {
    echo 'Copyright &copy ' . date('Y') .' ACME Studios Inc.';
}

そして、テーマのfooter.phpファイルで関数を呼び出します。

my_custom_footer();

すべてのテーマで同じ関数を呼び出す代わりに、(すべてのテーマで呼び出す必要がある)wp_footerアクションにフックするという方法もあります。

function my_custom_footer() {
    echo 'Copyright &copy ' . date('Y') .' ACME Studios Inc.';
}
add_action( 'wp_footer', 'my_custom_footer' );

この最新のスニペットをwp_content/mu-plugins内のファイルにドロップすると、テキストがすべてのテーマのフッターに表示されます。手動でテキストの位置やスタイルを設定したい場合は、テーマのfooter.phpファイルでwp_footer()への呼び出しを見つけ、それをHTML要素でラップすることで可能です。

フッタースクリプトなどの隠しHTMLコンテンツ用にwp_footer()を残したい場合は、footer.phpで独自のアクションを呼び出してから、好きなときにそれにフックすることができます。

footer.php内:

do_action( 'wpse_footer_content' );

Muプラグインの場合:

add_action( 'wpse_footer_content', function () { ?>

    content goes here

<?php } );
1
shea

はい。フッターのどちらかの端にswitch_to_blogとrestore_current_blogを使用して、メインブログにあるかのようにフッターをコーディングしてください。

0
Nick Budden