Я написал собственный плагин (который создает пользовательский тип сообщения) и позволяет любому пользователю отправлять новое сообщение из формы на моем веб-сайте. Чтобы предотвратить ботов, я установил код подтверждения по электронной почте, который они должны щелкнуть, чтобы изменить статус сообщения с Черновика на Опубликованный.
К сожалению, приведенный ниже код wp_mail (), похоже, выполняет этот URL-адрес подтверждения автоматически. Как только сообщение отправлено, оно устанавливается на Черновик, пока не достигнет этого кода, а затем автоматически публикуется.
Однако удаление этого блока заставляет все работать как положено. Кто-нибудь имеет представление о причине и как это исправить?
$confirm_url = site_url(). '/verification?id=' . $post_id . '&hash=' . $hash;
// Send a verification e-mail to the user to confirm publication
$subject = 'Please confirm your Slicer Profile submission';
$body = $confirm_url;
wp_mail( $profile_email, $subject, $body );
Это было решено, хотел поделиться решением для всех, кто может наткнуться на это сами. Site_url () хранился в своей собственной переменной, и косая черта в строке URL не была должным образом экранирована, что, похоже, вызывало проблему.
Теперь это было обновлено до следующего и отлично работает.
$site_url = site_url();
$confirm_url = $site_url. '\/verification?id=' . $post_id . '&hash=' . $hash;
// Send a verification e-mail to the user to confirm publication
$subject = 'Please confirm your Slicer Profile submission';
$body = $confirm_url;
wp_mail( $profile_email, $subject, $body );
Других решений пока нет …