WordPress Welcart上からGmail送信エラー 

NEW釈迦堂ネットショップでご注文のお客様より、電話の問い合わせで一番多いのが、返信のメールが届かないとお電話をいただくことが、昨年の12月頃より増えておりまして、私で可能な限り出来る対策を行ってはおりますが、すぐには解決となならずで2026年を迎えることに

年明け早々から、この課題解決に向け、まずはサーバーの引越移転から始めました。続いて、DNS(ドメイン・ネーム・サーバ)設定でメールの「SPF・DKIM・DMARC」をもう一度適宜書き換え、独自ドメイン名で、Gmail宛先に送信できるか試すと、すんなり送信が出来たので、一時は、これで解決出来たかと思われました。しかし、相変わらず、サーバー移転後も、メールが届かないと連絡があり、また、迷惑フォルダーにも届いていないみたいで、全く原因がわからず、ネット検索をすること数日経過

すると、ここ最近、Gmailがセキュリティを強化して、WordPressの標準PHPメーラーではGmailに送信できなくなっている情報があり、SMTPを使えば送信できる。と言うことから、早速、WordPressに「WP Mail SMTP」プラグインを導入

そのプラグインを有効にし設定画面より、「その他SMTP」を選択、コアサーバーV2の設定通りSMTPを割り当て、テスト送信すると、あれ、なぜかエラーでメールが送信できていない。再度、エラーのログを読み返し、今度は、コアサーバーV2のIPアドレスではなく、コアサーバーV2のドメイン名に変更し直し、改めて、テスト送信。今度は成功しましたと表示されたので、試しに、WordPressのWelcart管理画面よりGmail宛先へテスト送信すると、無事メールが届いているのが確認出来ました。

コアサーバーV2を利用して、Welcartでネットショップを運営されている方に、少しでもお役に立てれば光栄です。以下、2026年1月時点の設定画面をUPしておきますのでご参考まで


 

GoogleのAIモードの凄さ実感

現在、釈迦堂ネットショップの運営で使用しておりますソフトは、WordPressと呼ばれるCMS(コンテンツ・マネージ・システムの略)に、Welcartと言うプラグインを組み合わせております。

そのWordPressは、PHPと呼ばれるプログラム言語で作られていて、コアサーバーV1ではPHP7.4を使っていましたが、コアサーバーV2に引越移転を機に、PHP8.0以上にバージョンをUPさせました。

しかし、PHP7.4で動作していたものがPHP8.0以上では動作しなくなり、原因を調べると、コードの書き方が変更されて、以前のものが通用しないことがわかりました。

ただ、どこのヵ所を、どのように書き換えれば良いのかまでは、素人ではお手上げ状態でした。しかし、ダメもとで、巷で噂のAIくんに尋ねてみました。

以下のPHP7.4で動作していたコードをPHP8.0以上に対応させてと


<div class=”field”>
<?php _e(‘stock status’, ‘usces’); ?> : <?php usces_the_itemZaiko(); ?>
<?php if( ” != usces_the_itemZaikoNum(‘return’) ): ?>
(在庫数:<?php usces_the_itemZaikoNum(); ?>)
<?php endif; ?>
</div>


すると、答えが一瞬で画面上に現れ、早速WEB上で試して見ると、エラーなく動作してくれました。本来なら有料でお願いしなければならない案件でも、無料で書き換えていただけました。

以下回答

PHP 8.0以降では、usces_the_itemZaikoNum('return') が空文字 '' ではなく null を返す可能性があること、およびPHP 8.xの厳格な型比較や関数引数の仕様変更によりエラーや警告が発生しやすくなっています。

PHP 8.x(2026年現在の標準仕様)に適合した安全な書き方は以下の通りです。

修正後のコード

php

<div class="field">
    <?php _e('stock status', 'usces'); ?> : <?php usces_the_itemZaiko(); ?>
    
    <?php 
    $zaiko_num = usces_the_itemZaikoNum('return');
    // 値が空でなく、かつ 0 以上の数値(または数値文字列)であるかを確認
    if ( !empty($zaiko_num) || '0' === $zaiko_num ) : 
    ?>
        (在庫数:<?php echo esc_html($zaiko_num); ?>)
    <?php endif; ?>
</div>
修正のポイント
  1. 関数の戻り値を変数に代入:
    usces_the_itemZaikoNum('return') を複数回呼び出すのを避け、一度変数 $zaiko_num に格納することで処理を効率化し、予期せぬ動作を防ぎます。
  2. empty() と厳密比較の併用:
    PHP 8.0以降、数値と文字列の比較仕様が変更されました。'' != $value という書き方は、$value が 0 の場合に意図しない判定(false)になることがあります。!empty() または strlen() を使用し、「在庫数が 0」の場合も正しく表示されるよう '0' === $zaiko_num を考慮するのが安全です。
  3. エスケープ処理の追加:
    セキュリティ(XSS対策)のため、値を表示する際は esc_html() でラップすることを推奨します。
注意点
もし Welcart のバージョンが極端に古い場合、PHP 8.x 自体に対応していない箇所があるため、Welcart 公式サイトから最新版へのアップデートも検討してください。