Как я могу использовать код JS при выводе функции WordPress do_settings_section () - PullRequest
0 голосов
/ 09 июля 2020

Я хочу использовать свой код js на выходе функции do_settings_sections (), которая показывает мои поля настроек на странице плагина, но я не знаю, как это сделать.

это мой код формы:

<div class="wrap">
<br/>
<?php settings_errors (); ?>
<ul class="nav nav-tabs">
    <li class="active">
        <a href="#tab-1">Settings</a>
    </li>

    <li>
        <a href="#tab-2">About</a>
    </li>
</ul>

<div class="tab-content">
    <!------------- Settings tab ------------->
    <div id="tab-1" class="tab-pane active">
        <form method="post" action="options.php">
            <h1>Mail Plugin settings</h1>
            <p>
                You can change the mail server and specify that who fetch the email when a order completed .
            </p>
            <?php
            settings_fields ( 'mail_options_group' );
            do_settings_sections ( 'mail_plugin' );

            submit_button ();
            ?>
        </form>
    </div>
    <!------------ End ! --------------------->

    <!------------ About Plugin tab ---------->
    <div id="tab-2" class="tab-pane">
        <h1>About</h1>
        <p>
            Here you have to put a text, but not now .
        </p>
    </div>
    <!------------ End ! --------------------->
</div>

как вы можете видеть, я использую эти функции:

settings_fields ( 'mail_options_group' );
do_settings_sections ( 'mail_plugin' );
submit_button ();

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

мой код javascript:

Array.from(document.querySelectorAll('input[type=radio][name=MailPlugin]'))
    .forEach((a) => {
        a.addEventListener('change', (evt) => {
            let checked_input = Array.from(document.querySelectorAll('input[type=radio][name=MailPlugin]')).find((a)=>a.checked);
            if (checked_input && checked_input.value === 'radio1')
            {
                document.getElementById('TextInput').removeAttribute('');
            }
            else
            {
                document.getElementById('TextInput').removeAttribute('disabled');
            }
        }, false)
    });

А это функция поля:

public function wordpress_mail_server( $args )
{
    $name = $args['label_for'];
    echo '<label><input type="radio" id="Default" name="'.$name.'" value="radio1" checked>Default Wordpress Mail Server</label><br/>';
}

public function choose_mail_server( $args )
{
    $name = $args['label_for'];
    echo '<label><input type="radio" id="Choose" name="'.$name.'" value="radio2">Manual Mail Server</label><br/>';
}

public function mailFieldsServer()
{
    $values = get_option( 'mail_server' );
    echo '<input type="text" class="regular-text" id="TextInput" name="server" value=" ' . $values . ' " size="40" placeholder="gmail.google.com" disabled><br/>';

    // This part regarding to send input value to PHPMailer methods .
    if ( is_admin() && $_SERVER ['REQUEST_METHOD'] == "POST")
    {
        $this->host = $_POST['server'];
    }
}

public function mailFieldsUsername()
{
    $values = get_option ( 'mail_username' );
    echo '<input type="email" class="regular-text" id="TextInput" name="username" value="' . $values . '" size="40" placeholder="example@gmail.com" disabled><br/>';

    // This part regarding to send input value to PHPMailer methods .
    if ( is_admin() && $_SERVER ['REQUEST_METHOD'] == "POST")
    {
        $this->username = $_POST['username'];
    }
}

public function mailFieldsPassword()
{
    $values = get_option ( 'mail_password' );
    echo '<input type="password" class="regular-text" id="TextInput" name="password" value="' . $values . '" size="32" placeholder="your password" disabled><br/>';

    // This part regarding to send input value to PHPMailer methods .
    if ( is_admin() && $_SERVER ['REQUEST_METHOD'] == "POST")
    {
        $this->password = $_POST['password'];
    }
}

public function mailFieldsPort()
{
    $values = get_option ( 'mail_port' );
    echo '<input type="text" class="regular-text" id="TextInput" name="port" value="' . $values . '" size="6" placeholder="port" disabled><br/>';

    // This part regarding to send input value to PHPMailer methods .
    if ( is_admin() && $_SERVER ['REQUEST_METHOD'] == "POST")
    {
        $this->port = $_POST['port'];
    }
}

public function mailFieldsText($args)
{
    $id = $args ['id'];
    $width = $args ['width'];
    $height = $args ['height'];
    echo '<textarea id=" ' . $id . ' TextInput " class="regular-text" name="body" cols="' . $width . '" rows="' . $height . '" maxlength="300" placeholder="put your text here" disabled></textarea><br/>';

    // This part regarding to send input value to PHPMailer methods .
    if ( is_admin() && $_SERVER ['REQUEST_METHOD'] == "POST")
    {
        $this->body = $_POST['body'];
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...