質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1606閲覧

複数ヘッダーを切り替えたい(php部分的に呼び込み)

koro703

総合スコア29

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/08/10 03:15

編集2017/08/18 04:36

wordpressで、複数のヘッダーをページによって切り替えたいと考えています。
・共通ヘッダーのみ
・共通ヘッダー+可変ヘッダー01
・共通ヘッダー+可変ヘッダー02

可変ヘッダーの場合構造的には、下記のようになります。

|共通ヘッダー(header.php)|
|可変ヘッダー(header-01.php)|
|共通ヘッダー(header.php)|

可変ヘッダーが共通ヘッダーの間でなければ、

php

1<?php get_header(); ?> 2<?php get_header(01); ?>

のように出来ると思うのですが、
どうしても間に可変ヘッダーを入れないとレイアウトが崩れてしまいます。

共通ヘッダーを2つに分けて、可変ヘッダー+共通ヘッダー(下部)「header-01.php」
とすることも考えたのですが、可変ヘッダーがifの間に挟まっているため、
エラーが出てしまいます。

php

1<?php if ( has_nav_menu( 'top' ) ) : ?> 2<div class="navi-top"> 3 4<!-- 可変ヘッダー --> 5<?php get_template_part( 'template-parts/header/submenu', '01' ); ?> 6<!-- end 可変 --> 7 8</div><!-- .navi-top --> 9<?php endif; ?>

header.phpを更新すると他の部分も変更になるのが理想的なのですが、
何か良い方法はありますでしょうか?

<追記>

分解する前のheaderは下記の通りです。
真ん中あたりにある「可変ヘッダー」部分のパターンがいくつかあり、
変更になるページと必要ないページがあります。
複数あるので、header共通部分を都度変更するのは抜けるのがこわいので、
分解すると更新などが確実になるのでは…と希望しています。

php

1<!-- 共通ヘッダ(前半)--> 2<?php 3 4?> 5<html> 6<head> 7 8<?php wp_head(); ?> 9 10</head> 11 12<body <?php body_class(); ?>> 13<div id="page" class="site"> 14<a class="skip-link screen-reader-text" href="#content"><?php _e( 'Skip to content', 'twentyseventeen' ); ?></a> 15 16<header id="masthead" class="site-header" role="banner"> 17 18<?php get_template_part( 'template-parts/header/header', 'image' ); ?> 19 20<?php if ( has_nav_menu( 'top' ) ) : ?> 21<div class="navigation-top"> 22<div class="wrap"> 23<?php get_template_part( 'template-parts/navigation/navigation', 'top' ); ?> 24</div><!-- .wrap --> 25<!-- end 共通ヘッダ(前半)--> 26 27<!-- 可変ヘッダ--> 28<?php get_template_part( 'template-parts/header/submenu', 'product' ); ?> 29<!-- end 可変ヘッダ--> 30 31<!-- 共通ヘッダ(後半)--> 32</div><!-- .navigation-top --> 33<?php endif; ?> 34 35</header><!-- #masthead --> 36 37<!-- パンくず --> 38<?php get_template_part( 'template-parts/navigation/navigation', 'pankuzu' ); ?> 39 40 41<div class="site-content-contain"> 42<div id="content" class="site-content"> 43 44<!-- end 共通ヘッダ(後半)-->

使用テーマ:twenty-seventeen

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

koro703さんが悩んでいるところを適切に把握できていないかもしれませんが、以下のようにするのではだめなのでしょうか。

  • header-common-top.php (共通ヘッダー上部)
  • header-common-bottom.php (共通ヘッダー下部)
  • header-01.php (可変ヘッダー1)

PHP

1get_header('common-top'); 2get_header('01'); 3get_header('common-bottom');

質問文の以下の部分が理解できていないので、的外れな回答だったら申し訳ないです。
よろしければ、下記を試した場合どのようなエラーが出たのかも追記していただけますか。

共通ヘッダーを2つに分けて、可変ヘッダー+共通ヘッダー(下部)「header-01.php」

とすることも考えたのですが、可変ヘッダーがifの間に挟まっているため、
エラーが出てしまいます。


追記
各ファイルを以下のようにしてはいかがでしょうか。

PHP

1// header-common-top.php 2<?php if ( has_nav_menu( 'top' ) ) : ?> 3<div class="navigation-top"> 4<div class="wrap"> 5<?php get_template_part( 'template-parts/navigation/navigation', 'top' ); ?> 6</div><!-- .wrap --> 7<?php endif; ?>

PHP

1// header-01.php 2<?php get_template_part( 'template-parts/header/submenu', 'product' ); ?>

PHP

1// header-common-bottom.php 2<?php if ( has_nav_menu( 'top' ) ) : ?> 3</div><!-- .navigation-top --> 4<?php endif; ?>

投稿2017/08/14 05:28

編集2017/08/18 10:24
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koro703

2017/08/17 03:13

Parse error: syntax error, unexpected 'endif' (T_ENDIF) in URL/header-01.php on line 4 上記のようなエラーが出ます。 <?php if ( has_nav_menu( 'top' ) ) : ?>の終了<?php endif; ?>を可変ヘッダーの下/共通ヘッダー(下部)の上と入れる場所を変えてもその部分がエラーになるため、それが原因だとは思うのですが……。 可変ヘッダーはnavi-topやmenu-topの外には出せないので、何か良い方法は無いでしょうか?
退会済みユーザー

退会済みユーザー

2017/08/17 11:45

endifの位置を変えても同じ位置にエラーが発生するということは、header-01.phpの記述自体に文法エラーがあるということはないでしょうか。 よろしければ、header-01.phpなどの関係するPHPファイルの内容も質問文に記載していただけますか。
koro703

2017/08/18 04:37

ありがとうございます。 分割する前のheaderを追記載してみましたので、宜しくお願い致します。
koro703

2017/08/22 06:50

mizさん ありがとうございます!!!! きちんと思い通りに出来ました! やりたい事のイメージをなかなか実現できなかったので、とても助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問