dounokouno / TransmitMail

Copyright表示不要のPHP製汎用メールフォームシステム
http://etc.dounokouno.com/TransmitMail/
MIT License
142 stars 48 forks source link

WordPressへの読み込みできない #76

Closed taka224 closed 3 years ago

taka224 commented 3 years ago

WPでTransmitMailを使いたいのですが、エラーになります。

page-contact.php

require_once '/contact2/lib/TransmitMail.php';
$tm = new TransmitMail();
$tm->init('/contact2/config/config.php');
get_header();
get_sidebar();

以下のエラーが表示されます。 Warning: require_once(/contact2/lib/TransmitMail.php): failed to open stream: No such file or directory in /home/users/0/lolipop.jp-dp59188621/web/wp/wp-content/themes/baydream/page-contact.php on line 5

Fatal error: require_once(): Failed opening required '/contact2/lib/TransmitMail.php' (include_path='.:/usr/local/php/7.4/lib/php') in /home/users/0/lolipop.jp-dp59188621/web/wp/wp-content/themes/baydream/page-contact.php on line 5

何か原因わかりますか? お手数ですがよろしくお願いします。

dounokouno commented 3 years ago

@taka224 様

一つ目のエラーですが、エラーの内容を読んでいただくか、翻訳サイトなどで翻訳していただくとわかるかと思いますが、 require_once の引数で指定した /contact2/lib/TransmitMail.php というファイルがサーバー上に存在していない、という状態のようです。

PHP の require_once は引数に相対パスを渡す仕様となっています。

サーバー上のルートディレクトリ以下に /contact2/lib/TransmitMail.php を配置されたのであれば上記の書き方で間違っていないかと思いますが、 WordPress のテーマファイル以下にファイルを配置されたのであれば、書き方が間違っています。

例えば、下記のようなファイル構成の場合、

WordPress の設置ディレクトリ/
    └ wp-content/
        └ themes/
            └ theme_name/
                ├ page-contact.php
                └ contact2/
                    ├ テンプレートファイル一式
                    ├ config/
                    ├ lib/
                    ├ log/
                    └ tmp/

require_once の引数は './contact2/lib/TransmitMail.php' または 'contact2/lib/TransmitMail.php' となるかと思います。

ただ、 WordPress ではテーマファイル以下の php ファイルが読み込まれた場合、パスの参照が変になってしまう(確か、実際に実行される php ファイルから見た相対パスと判別される)ので、私のブログ記事で「TransmitMail を WordPress で使う場合の設置方法( WordPress 5.5 編)」でが、 WordPress の定数を使ってパスを組み立てています。具体的には下記のようなコードです。

require_once TEMPLATEPATH . '/contact/lib/TransmitMail.php';

ご参考になれば幸いです。

taka224 commented 3 years ago

ありがとうございます。

dounokouno commented 3 years ago

@taka224 本件は解決されましたでしょうか?

taka224 commented 3 years ago

解決しました!ありがとうございます。