@danchikraw
Веб-додик

Не работают функции WP?

У меня есть главный файл плагина, плагин простой создаёт форму по шорткоду и таблицу в бд.
Но вот когда я отправляю данные с формы на другой файл в папке плагина у меня не работают встроенные функции wp.
Как быть?
add_action('wp_enqueue_scripts', 'connect_scripts_and_styles_form');

function connect_scripts_and_styles_form() {
	wp_register_script('jquery_form', plugins_url('scripts/jQuery.js', __FILE__));
  	wp_enqueue_script('jquery_form');

  	wp_register_script('script_form', plugins_url('scripts/script.js', __FILE__));
  	wp_enqueue_script('script_form');
  	wp_register_style('style_form', plugins_url('styles/style.css', __FILE__));
  	wp_enqueue_style('style_form');
}

function start_plug_form() {
	global $wpdb;
	$wpdb->query('CREATE TABLE wp_form (id int AUTO_INCREMENT, email varchar(255), phone varchar(255), name varchar(255), age varchar(255), cours varchar(255), PRIMARY KEY (id))');
}
register_activation_hook(__FILE__, 'start_plug_form');

function stop_plug_form() {
	global $wpdb;
	$wpdb->query('DROP TABLE wp_form');
}
register_deactivation_hook(__FILE__, 'stop_plug_form');

add_shortcode('form_add', 'form_short');

function form_short() {
	$url = plugins_url('form.php', __FILE__);
	return '
			<form method="POST" action="' . $url . '" class="form_zap">
				<div class="name_form">Записаться на пробное занятие</div>
				<div class="errors_form">Ошибка, вы не ввели email!</div>
				<div>Электронная почта:</div>
				<div><input type="email" name="email"></div>
				<div>Телефон:</div>
				<div><input type="number" name="phone"></div>
				<div>Ф.И.О:</div>
				<div><input type="text" name="name"></div>
				<div>Возраст:</div>
				<div><input type="number" name="age"></div>
				<div>Курс:</div>
				<div>
					<select name="cours">
						<option value="Школьный">Школьный</option>
						<option value="Индивидуальный">Индивидуальный</option>
						<option value="Корпаративный">Корпаративный</option>
					</select>
				</div>
				<div><button class="form_button_zap">Записаться</button></div>
			</form>
			';
}
?>
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
mihdan
@mihdan
WordPress-евангелист, ведущий РНР - разработчик
Вам нужно подгрузить WordPress среду с минимальной нагрузкой при помощи SHORTINIT.

Для чего в send.php пишем примерно так:

// указываем, что нам нужен минимум от WP
define('SHORTINIT', true);

// подгружаем среду WordPress
// WP делает некоторые проверки и подгружает только самое необходимое для подключения к БД
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );

// тут мы можем общаться с БД. Но практически никакие функции WP работать не будут.
// Глобальные переменные $wp, $wp_query, $wp_the_query не установлены...
global $wpdb;
$result = $wpdb->get_results("SELECT post_title FROM $wpdb->posts WHERE post_type='post'");

if( $result )
	foreach( $result as $post ){
		echo "$post->post_title <br>";
	}


Пути только ваши пропишите.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы