Adım adım: İlk olarak hata mesajının göründüğü dosyayı bulun. Dosyalarda aramak için Notepad ++ ve CTRL+ Fkomutunu kullanıyorum. Hata mesajının yalnızca ilk birkaç sözcüğünü aramak iyi bir fikirdir, çünkü bazı hata mesajları farklı mesajlarla birleştirilir.
Hata mesajınız wp-login.php
sadece orada, kutsal şans olarak görünür . Şimdi bu hatanın neden ortaya çıkabileceğine bir göz atalım.
if ( $message && !wp_mail($user_email, $title, $message) )
İki koşul vardır. $message
doğru olmalıdır (boş bir dize değil, yanlış değil, boş değil, vb.). Ve wp_mail()
yanlış döndürmemelidir.
Yukarıdaki bir satırda bir filtre vardır $message = apply_filters('retrieve_password_message', $message, $key);
, bu nedenle bir eklentinin (veya temanın) bu filtreyi kullanması ve doğru olmayan bir değer döndürmesi mümkündür (boş dize, yanlış, null vb.).
Ancak wp_mail()
çalışıp çalışmadığını kontrol etmek çok daha kolaydır . Kendinize test postası göndermek için küçük bir eklenti yazın:
<?php
/**
* Plugin Name: Stackexchange Testplugin
* Plugin URI: http://yoda.neun12.de
* Description: Send me a test email
* Version: 0.1
* Author: Ralf Albert
* Author URI: http://yoda.neun12.de
* Text Domain:
* Domain Path:
* Network:
* License: GPLv3
*/
namespace WordPressStackexchange;
add_action( 'init', __NAMESPACE__ . '\plugin_init' );
function plugin_init(){
$to = 'your-email-adress@some-domain.tld';
$subject = 'Testemail';
$message = 'FooBarBaz Testmail is working';
wp_mail( $to, $subject, $message );
}
(Bu PHP5.3 kodudur. PHP5.2 çalıştırıyorsanız, ad alanı öğelerini kaldırın)
Eklenti, etkinleştirmeden hemen sonra bir test postası göndermelidir. Değilse, bazı arka uç sayfalarını (ör. Gösterge tablosu) aramak bunu yapmalıdır.
Test postası gelmezse, muhtemelen bir sorununuz vardır wp_mail()
. Hata ayıklamayı açın:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
@ini_set( 'display_errors',1 );
Bu kodu wp-config.php
kendinize ekleyin ve kendinize bir testmail göndermeyi deneyin. Şimdi bazı hata mesajları almalısınız ve bunlar da oturum açılmalıdır wp-content/debug.log
(Eklentilerin ve / veya temaların neden olduğu daha fazla hata varsa hata ayıklama günlüğü çok büyüyebilir).
Bu noktada, wp_mail()
başarısız olursa ve eğer öyleyse, neden iyi bilgiler aldınız . Doğru wp_mail()
çalışırsanız ve testmail gelirse, başa dönün ve neden $message
doğru olmadığını öğrenin .
İle ilgili sorunlarınız varsa wp_mail()
, wp_mail()
PHP mail()
işlevini kullanmadığını unutmayın . WordPress bir PHP sınıfı ( PHPMailer ) kullanır. Belki sendmail yerine SMTP kullanmak için bir eklentiye ihtiyacınız var . Veya sorun başka bir yerde. Bilmiyoruz. Araştırmalısın.