子テーマでphpファイルの再定義

このQ&Aのポイント
  • 子テーマでphpファイルの再定義についてエラーが発生しています。親テーマと子テーマで同じ関数が定義されていることが原因でしょうか。
  • 子テーマにあるファイルをrequireすることで親テーマを編集せずにコードを修正することは可能でしょうか。
  • 初心者ですが、子テーマでheader-logo.phpファイルを編集しようとしていますが、関数の再定義エラーが発生しています。どのように修正すれば良いでしょうか。
回答を見る
  • ベストアンサー

子テーマでphpファイルの再定義

初心者です。 現在ウェブサイトをWPにて構築しております。 ヘッダー部分のコードを編集したく、 子テーマにheader-logo.phpというファイルを格納し編集しようとしました。 ただ、このファイルが、親テーマのfunction.phpでrequire_onceにて定義してあるため、子テーマのfunction.phpで再定義しようとすると、下記の通りエラーが出てしまいます。 ****************************************エラー内容******************************************* wp-content/themes/law_tcd031/functions/header-logo.php ファイルの447行目のエラーのため、PHP コードの変更をロールバックしました。修正し、もう一度保存してください。 Cannot redeclare _dp_get_upload_err_msg() (previously declared in wp-content/themes/law-child/functions/header-logo.php:447) ****************************************エラー内容******************************************* 恐らく、親テーマでも同じ関数定義があるため、エラーとして出てきていると思うのですが、認識あっていますでしょうか。 本件に関して、親テーマを編集せずに、子テーマにあるファイルをrequireすることは可能でしょうか。 お忙しい所大変申し訳ありませんが、ご教授いただけると幸いです。

  • PHP
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1305/1776)
回答No.1

WPで子テーマを使う意義は正しく今回の様なケースに柔軟に対応出来る点にあります。エラーの原因は既に質問者が理解している通りですので、解決策は至って簡単、その重複している関数名を変更してやれば良いのです。 この場合は親テーマはそのままに、子テーマの header-logo.php の該当部分を何か適当な違う関数名に書き換えて再保存すればOKです。ただし修正する場合、直接エラー表示が出た部分のみだけでは無く、ちゃんと子テーマ側の全てのphpファイルを調べて同じ関数名の記述が他にもないか調べて、あればそれも含めて全て一律に同じ関数名に修正して置く必要があります。

tommycat69
質問者

お礼

4017B様 ご回答ありがとうございました。 4017B様のご回答を元に試行錯誤したところ、やりたかったことを実現することが出来ました。 お忙しい所ご対応頂きありがとうございました!

関連するQ&A

  • WORDPRESSのfunctions.php

    こんばんは。 タイトルの「functions.php」のカスタマイズについて、いろんなサイトで書かれています。 http://www.webcreatorbox.com/tech/customize-wordpress-admin-page/ 私も試そうと思っていますが、「wp-content/themes/(テーマ名)」の中と「wp-includes」の中と2つあります。 どっちのことでしょうか?

    • 締切済み
    • CSS
  • Wordpress のPHPファイルをIEで開く

    WordPress のテーマを変更したいと思い、PHPファイルをいじったのですが PHPファイルをそのままIEで開けないんですね。 ディレクトリはこんな感じなんですが、 C:\Program Files\Apache\Apache24\htdocs\wordpress\wp-content\themes http://localhost/wordpress\wp-content\themes\twentytwelve\index.php では開けませんでした。間違ってますか? It works と表示されるファイル(C:\Program Files\Apache\Apache24\htdocsにあります。)はhttp://localhost/で開けます。

    • ベストアンサー
    • PHP
  • wordpressのテーマカスタマイズにについて

    wordpressのテーマカスタマイズにについて 既存のテーマを使用しカスタマイズしています。 list.phpというファイルを新規作成しアップロードしました。 <?php get_header(); ?> <dl class="feed"> <?php $posts = get_posts('numberposts=5&order=desc'); foreach($posts as $post): ?> <dd><span class="day"><?php echo date("Y年m月d日", strtotime($post->post_date)); ?></span><a href="javascript:;" onclick="window.open('<?php the_permalink(); ?>','popup','width=800,height=700,scrollbars=yes,resizable=no,status=yes');" id="post-<?php the_ID(); ?>"><?php the_title(); ?></a> </dd> <?php endforeach; ?> </dl> </div> <?php get_footer(); ?> と記述してあります。 ディレクトリパスhttp://ドメイン/wpディレクトリ名/wp-content/themes/テーマ名/list.php にアクセスすると Fatal error: Call to undefined function get_header() in /home/sites/chicappa.jp/users/サーバ名/web/wpディレクトリ名/wp-content/themes/テーマ名/list.php on line 1 とエラーが出てしまいます。 list.phpを正しく閲覧するためにはどうしたら良いでしょうか。 どなたかご回答お願いいたします。

    • ベストアンサー
    • PHP
  • Wordpress で不要なPHPがある場合は?

    外注により作成された Wordpress テーマを使いサイトを運用しています。 しかし、明らかに関係ないPHP(ページのテンプレート?)があり削除しても問題ないのか分からないため質問させていただきました。 具体的には、、、 wp-content/themes/***_wp/page-a***e.php というPHPファイルがたくさんあります。 中身をみると全く関係ない他社の内容が書かれています。 動作的に遅くなるとかあるようでした削除したいと思っていますがなにか問題となる事はあるでしょうか?

  • Wordpress初心者です

    wordpress初心者です。 wordpressを勉強しようとしていて、最初でつまづいてしまいました。 XAMPPを導入して、htdocs/wordpress/wp-content/themes/twentythirteen/index.php をhttp://localohst/wordpress/wp-content/themes/twentythirteen/index.php で表示させようとしたら、 Fatal error: Call to undefined function get_header() in C:\xampp\htdocs¥wordpress\wp-content\themes\twentythirteen\index.php on line 17 とエラーが出てしまって表示できません。何が原因でどのように対処すればよいのでしょうか? よろしくお願いします。

    • 締切済み
    • CSS
  • 特定のHPだけ見れない

    特定の(1つの)HPが見れなくなりました。 キャッシュで開くと見れるみたいですが、 普通にクリックしても見れません。 昨日までは普通に見れたのに…なぜでしょうか? 具体的に言うと、そのHPに行こうとすると、 以下のような英語文字が出てきます。 (画面は白い)↓ * Front to the WordPress application. This file doesn't do anything, but loads * wp-blog-header.php which does and tells WordPress to load the theme. * * @package WordPress */ /** * Tells WordPress to load the WordPress theme and output it. * * @var bool */ define('WP_USE_THEMES', true); /** Loads the WordPress Environment and Template */ require('wp/wp-blog-header.php'); ?> 検索のやつで英訳してみたのですが… WordPressアプリケーションに面していてください。 このファイルは何もしないで、テーマをロードするためにWordPressをして、言う* wp-ブログ-header.phpをロードします。 * * @package WordPress */ /** * WordPressテーマをロードして、それを出力するようにWordPressに言います。 * * @var bool */ 定めてください(『WP_USE_THEMES』(本当の)); /WordPress EnvironmentとTemplate */が必要とする(『wp/wp-blog-header.php』)** Loads; ?> 2.* WordPressアプリケーションに面していてください。 このファイルは何もしないで、テーマをロードするためにWordPressをして、言う* wp-ブログ-header.phpをロードします。 * * @package WordPress */ /** * WordPressテーマをロードして、それを出力するようにWordPressに言います。 * * @var bool */ 定めてください(『WP_USE_THEMES』(本当の)); ちょっとよくわかりません。PCが苦手というのもあって。 どうすれば見れるようになりますか? 他のHPやサイトは普通に見れます。 詳しい方、どうかお願いします。 Windows7、CORE i 5 東芝dynabook TX/77MBL です。

  • Wordpressのphp編集したらエラー出ました

    こんにちは。 Wordpressの記事投稿画面で<br>タグや<p>タグを改行に普段使っていてEnterキーでの自動改行が邪魔だったので、 インターネットで調べて、 http://www.webopixel.net/wordpress/171.html のサイトの説明通りに functions.phpを編集しました。 しかし、その後自分のサイトを開くと、 Parse error: syntax error, unexpected T_STRING in /home/ユーザー名/サイトドメイン名/public_html/wp-content/themes/keni61_wp_healthy_140509/functions.php on line 391 のメッセージが出て、サイト表示されないばかりかログインして前の状態に戻すことすらできなくなってしまいました。 (1)エラーが出る前の状態に戻す方法を教えて頂けますと幸いです。 (2)Enterキーでの自動改行機能をなくし、タグ打ちのみで改行などできるようにするにはどうすれば良いでしょうか?

  • wordpressのURL変更について

    http://0000.com/wpをhttp://0000.comに変更をしようと思いました。 まず設定画面からサイトの名前をhttp://0000.com/wpからhttp://0000.comに変更し、 index.phpをFTPから抜き <?php /** * Front to the WordPress application. This file doesn't do anything, but loads * wp-blog-header.php which does and tells WordPress to load the theme. * * @package WordPress */ /** * Tells WordPress to load the WordPress theme and output it. * * @var bool */ define('WP_USE_THEMES', true); /** Loads the WordPress Environment and Template */ require('./wp-blog-header.php'); ?> の↓を変更。 /** Loads the WordPress Environment and Template */ require('./wordpress/wp-blog-header.php'); ?> その後一つ上の層にindex.phpをあげたのですがサイトにアクセスすると、 Warning: require(./wordpress/wp-blog-header.php) [function.require]: failed to open stream: No such file or directory in /home/sites/heteml/users113/0/1/f/01f-boy/web/pimp/index.php on line 17 Warning: require(./wordpress/wp-blog-header.php) [function.require]: failed to open stream: No such file or directory in /home/sites/heteml/users113/0/1/f/01f-boy/web/pimp/index.php on line 17 Fatal error: require() [function.require]: Failed opening required './wordpress/wp-blog-header.php' (include_path='.:/usr/local/php5/php') in /home/sites/heteml/users113/0/1/f/01f-boy/web/pimp/index.php on line 17 と出てきてサイトが表示されません 。 wp-blog-header.phpがなにかあるのかと思い開けると下記のコードが書いてありました。 <?php /** * Loads the WordPress environment and template. * * @package WordPress */ if ( !isset($wp_did_header) ) { $wp_did_header = true; require_once( dirname(__FILE__) . '/wp-load.php' ); wp(); require_once( ABSPATH . WPINC . '/template-loader.php' ); } ?> しかし自分はphpがよくわからないためどこを変更すればhttp://0000.comでサイトが見れるのかわかりません。 教えてください。

    • ベストアンサー
    • PHP
  • WordPressのテーマのphpのエラーについて

    WordPressのテーマを編集中に構文エラーが起きました。 phpについてはあまり詳しくないので是非わかる方がいればお力を貸していただきたいです。 『syntax error, unexpected T_ENDIF in ~/functions.php on line 100』とでて問題のコードは 下記の辺りではないかと思っています。 if ( function_exists( 'wp_get_theme' ) ) { add_theme_support( 'custom-background', $args ); } else { define( 'BACKGROUND_COLOR', $args['default-color'] ); define( 'BACKGROUND_IMAGE', $args['default-image'] ); add_theme_support( 'custom-background', $args ); } endif; // mon_cahier_setup add_action( 'after_setup_theme', 'mon_cahier_setup' ); コードの全文は下記のリンク先にあります。 http://codepad.org/caNvP1Hi いろいろ調べてみたつもりですが、具体的な解決策はわからないままです。 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでファイルを先に読み込ませる

    PHP初心者です。 私が使用したい多くの関数を用意した「functions.php」を作成しました。 関数を使用するファイルは、これを文頭で読み込ませているのですが 出来れば初期状態(外部ファイルを読み込まない状態。requireなど使わないで)で使いたいと考えています。 「.htaccess」などで「functions.php」を読み込んで、「.htaccess」そのディレクトリ以下はPHPファイルを作成したら関数を使用できるようにしたいのです。 ※ちなみに私は使用したいサーバーの管理権限はありません 「.htaccess」では無くても良いのですが、こういう方法は可能ですか?

    • 締切済み
    • PHP

専門家に質問してみよう