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

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

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

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

PHP

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

3回答

680閲覧

Wordpress functions.php で Fatal error: Cannot redeclare がでる。

Novz

総合スコア22

WordPress

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

PHP

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2019/09/26 12:38

編集2019/09/28 23:27

お世話になっております。

テーマ「twentyeleven」にて
固定ページのページテンプレート page-template.phpのみに、下記の関数を適用させて、
twentyelevenのスタイルやカスタマイザーを適用しないようにしたいと思っています。

function.php

1// wp_headの不要なコードを削除する 2function my_delete_plugin_files() {wp_dequeue_style('twentyeleven-block-style');} 3add_action( 'wp_enqueue_scripts', 'my_delete_plugin_files' ); 4 5 6// カスタマイザーが生成するcssを無効にする 7add_action( 'after_setup_theme', 'my_remove_custom_background', 11); 8function my_remove_custom_background() { 9 remove_theme_support( 'custom-background'); 10} 11

通常は下記の条件分岐で適用できると思うのですが、
function.phpに記述する際はどのようするとよいかわからずにおります。

function.php

1 2function switch_twentyeleven_style() { 3 if( !is_page_template('page-template.php')){ 4 5 // page-2019でない場合はデフォルトテンプレートを読み込む 6 wp_enqueue_style( 'twentyeleven_style', get_stylesheet_directory_uri() . '/style.css' ); 7 8 } else { 9 // page-2019の場合 10 11 function my_delete_plugin_files() {wp_dequeue_style('twentyeleven-block-style');} 12 add_action( 'wp_enqueue_scripts', 'my_delete_plugin_files' ); 13 14 15 add_action( 'after_setup_theme', 'my_remove_custom_background', 11); 16 function my_remove_custom_background() { 17 remove_theme_support( 'custom-background'); 18 } 19 20 } 21} 22add_action('wp_enqueue_scripts', 'switch_twentyeleven_style'); 23

これでテンプレートの条件分岐はできるようになったのですが、

function my_delete_plugin_files() {wp_dequeue_style('twentyeleven-block-style');} add_action( 'wp_enqueue_scripts', 'my_delete_plugin_files' ); add_action( 'after_setup_theme', 'my_remove_custom_background', 11); function my_remove_custom_background() { remove_theme_support( 'custom-background'); }

の部分で

Fatal error: Cannot redeclare

というエラーでてうまく動作しません。


関数の二重定義エラーなので、function.phpの他の部分に

function my_delete_plugin_files() function my_remove_custom_background()

がないか確認してみましたが見つかりませんでした。

条件分岐のコードを入れないで上記を入れると動作します。

どのように修正すると動作するでしょうか。

どうかお力をおかしください。
よろしくおねがいします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/09/26 13:03

ユーザー関数内で分岐すればいいんじゃないかな?
Novz

2019/09/28 22:45

条件分岐まではうまくいきました。アドバイスありがとうございます。
guest

回答3

0

全角文字が含まれてます
‘/page-template.php'

投稿2019/09/26 13:04

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Novz

2019/09/28 09:04

ありがとうございます。 <? php if( is_page_template('/page-template.php')) ; ?> 全角文字を修正してみましたが状況は変わりませんでした。 以後気をつけるようにします。
guest

0

最終的に条件分岐は下記で実装できました。
PHP7.1.5です。

function.ph

1 2add_action('wp_enqueue_scripts', function () { 3 if (is_page_template('page-2019.php')) { 4 // page-2019でない場合はデフォルトテンプレートを読み込む 5 wp_enqueue_style('twentyeleven_style', get_stylesheet_directory_uri() . '/style.css'); 6 } else { 7 8 add_action('wp_enqueue_scripts', function () { 9 wp_dequeue_style('twentyeleven-block-style'); 10 }); 11 add_action('after_setup_theme', function () { 12 remove_theme_support('custom-background'); 13 }, 11); 14 15 } 16}); 17

ただ、

add_action('wp_enqueue_scripts', function () { wp_dequeue_style('twentyeleven-block-style'); }); add_action('after_setup_theme', function () { remove_theme_support('custom-background'); }, 11);

こちらは動作しませんでしたので別件として質問したいと思います。

ありがとうございました。

投稿2019/09/29 03:10

Novz

総合スコア22

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

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

0

ベストアンサー

投稿2019/09/26 13:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Novz

2019/09/28 10:41 編集

全角になってしまったりしているところを修正して記述してみたところ エラーは出なくなりましたが反映もされませんでした ```function.php function template_bunki () { if( is_page_template('page-2019.php')){ function my_delete_plugin_files() {wp_dequeue_style('twentyeleven-block-style');} add_action('wp_enqueue_scripts', 'my_delete_plugin_files'); add_action( 'after_setup_theme', 'my_remove_custom_background', 11); function my_remove_custom_background() { remove_theme_support( 'custom-background'); } } else { } } add_action( 'wp_template_bunki', 'template_bunki' ); ``` この書き方では誤っているのでしょうか。 未熟で申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問