успех. php в моем первом контактном формуляре плагина результаты на странице не найдены - PullRequest
0 голосов
/ 10 февраля 2020

ОБНОВЛЕНИЕ: извините, спасибо за предлагаемые решения ... не очень понятно, как реализовать, я думаю, что я не слишком ясно ... если я могу понять, как реализовать решения, которые были бы аккуратными ...

Я также успешно сумел заставить код работать над созданием новой таблицы базы данных и вставить тестовые данные, но пропустил, что это не так сложно ....

Я ДЕЙСТВИТЕЛЬНО хочу иметь возможность ...

  • отображать некоторый контент, который я могу поместить в успех. php (или где-то еще), когда сообщение отправлено успешно, этот контент будет содержать сообщение Отправлено - ДА! и затем я хотел бы иметь возможность добавлять существующий контент wp - некоторые услуги или продукты, которые могут вас заинтересовать, и отображать их на той же странице результатов успеха после отправки сообщения ...

возможно есть лучший способ перенаправить пользователей после отправки сообщения ...

затем .... Мне также нужно сохранить данные формы (еще не сделано) в новую таблицу, которую я создал (получил таблица, созданная с помощью плагина), а затем отобразить таблицу всех записей отправки формы в административной панели (не сделано)

  • Я заменил содержимое моего основного файла. php ( Основной php файл плагина в имени плагина root.

    <?php
    /** template info etc...
    **/
    // Find all .php files in the includes dir of my plug in folder. 
    foreach ( glob( plugin_dir_path( __FILE__ ) . "includes/*.php" ) as $file ) {
    include_once $file;
    } 
    ?>
    
  • и все мои файлы, кроме основного (который находится в плагине root), находятся в плагинах / plugin-name / includes и находятся в процессе поиска - YAY

, поэтому мой include / webform. php отображает форму, отправляет электронное письмо , но я не могу получить это сообщение об ошибке или об успешном завершении. php или об ошибке. php что нужно сделать. * 1 027 *

  • включает / успех. php теперь выглядит так ... согласно предложению ДК

    <?Php
    $Errors = implode(' ', $_SESSION['errMsg']);
    echo $Errors; ?>
    
  • включает / webform . php теперь выглядит следующим образом ...

    <?php
    
    function d6s_opp_html_form() {
    echo '<form action="' . esc_url( $_SERVER['REQUEST_URI'] ) . '" method="post">';
    
     //Form action page is the current url.  the form is called by a shortcode that will run functions that are written within this plugin's files, they can be in different files in different folders within the plug in because we have told the plug in to load them in the main plug in file.php horray thay is working..     
    
    // other form fields removed to shorten this stakoverflow post 
    echo '<p>';
    echo 'Your Name* <br />';
    echo '<input type="text" name="d6s-opp-name" pattern="[a-zA-Z0-9 ]+" value="' . ( isset( $_POST["d6s-opp-name"] ) ? esc_attr( $_POST["d6s-opp-name"] ) : '' ) . '" size="40" placeholder="First & Last name" required />';
    
    // Now using required - is that better than having to check if not empty in success or fail bit????
    
     echo '<p><input type="submit" name="d6s-submitted" value="Send"/></p>';
     echo '</form>';
    }
    
    //Short code function is here and works GREAT
    
  • Затем, ниже, в том же файле, это функция, которую я решил, DK означал, что я должен поместить первую часть его решение 1

Я думаю, что здесь я все еще ошибаюсь

   function deliver_opp_mail() {
       // if the submit button is clicked, send the email
   if ( isset( $_POST['d6s-submitted'] ) ) {

    //sanitise form values so that form data is readable... eg/ if users enter code/script or formatting symbols, it is not missinterpretted as code and is seen as all text. 
    $name    = sanitize_text_field( $_POST["d6s-opp-name"] );
    $email   = sanitize_email( $_POST["d6s-opp-email"] );
    $messagesubject = sanitize_text_field( $_POST["d6s-opp-subject"] );
    $messagecontent = esc_textarea( $_POST["d6s-opp-message"] );
    $phone = ( $_POST["d6s-opp-phone"] );
                //  Would like to consider calling form values via global Variables. 

    $subject = "NEW OPPURTUNITY: $messagesubject";

    $d6sdir = plugin_dir_path( __FILE__ );

    //Create the Email Body Message using free text and data from the form.  
    $message = "New Message From: $name \n MESSAGE: $messagecontent \n Return Email: $email \n Return Phone $phone ";


    // get the blog administrator's email address, form data is emailed to this email address.  
    $to = get_option( 'admin_email' );
            // Look into setting a to: Email address in WP Admin Console. 

    $headers = "From: $name <$email>" . "\r\n";

    if ( wp_mail( $to, $subject, $message, $headers ) ) {

    //maybe this is in the wrong spot, or perhaps this is not the solution I need, but I have tried this in a few different places and can't get it to work.. 
        $Msg = array(
            "You have an error",
            "Your mail sent succesfully"
        );

        $_SESSION['errMsg'] = $Msg;

    //this take the user to www.mydomain.com/.....wp-content/plugins/my-plugin/includes/success.php - the file is there, but WP theme not found is displayed. 

 header("Location: $d6sdir/success.php");
exit;
   }
   }
   }
   ?>

* Не хочу отображать сообщение над формой на Успех или ошибка ... В будущих планах рабочего процесса необходимо, чтобы пользователи переходили на страницу без формы и другого содержимого после того, как они нажали кнопку Отправить.

* также с использованием отчетов об ошибках - похоже, что-то происходит или мигает, прежде чем отображается бит, не найденный в теме, и не сообщается о других ошибках ...

    <?Php  error_reporting(E_ALL); ini_set('display_errors', 1);

*** *********************** ИЗ ПЕРВОНАЧАЛЬНОЙ ПОЧТЫ .... Действительно заинтересован в обучении. Первое сообщение, спасибо за помощь

Назначение плагина: Создайте плагин, который я в конечном итоге смогу встроить в специальный инструмент CRM для своего малого бизнеса, и научитесь кодировать.

* Почему это не так просто ...

1 Ответ

0 голосов
/ 10 февраля 2020

Решение 1 передача сообщений на success.php

$Msg = array(
    "You have an error",
    "Your mail sent succesfully"
);
$_SESSION['errMsg'] = $Msg;

success.php 

$Errors = implode(' ', $_SESSION['errMsg']);
echo $Errors;

Решение 2:

$_SESSION["errMsg"] = "Your mail sent succesfully";

if(isset($_SESSION['errMsg']) AND !empty($_SESSION['errMsg']) ): 
echo "<div class='alert danger'>".$_SESSION['errMsg']."</div>"; 
endif;

Не найдено решение :

Вы можете использовать $_SERVER['DOCUMENT_ROOT'];, чтобы найти root D:/wamp/www

, а затем полный URL-адрес страницы, например:

echo $_SERVER['DOCUMENT_ROOT']."/yourFolder/test.php";

вывод: D:/wamp/www/yourFolder/test.php

Примечание : будет хорошо, если вы используете exit(); сразу после header("Location:");

...