Ну, что я сделал, чтобы решить эту проблему является:
//**SECTION : 1**
function user_login_foo() {
return get_login_form(); // get_login_form() function will return the html template i want to display.
}
add_shortcode('user_login', 'user_login_foo'); // created a shortcode
**// SECTION: 2**
function get_login_form()
{
ob_start(); ?>
<h3><?php __('Login'); ?></h3>
<form action="" method="post">
<fieldset>
// the login form comes here
</fieldset>
</form>
<?php
return ob_get_clean();
}
function validate_login_user() {
// the login validation logic comes here
}
add_action('init', 'validate_login_user');
РАЗДЕЛ 1: зарегистрирован шорткод, который будет вызывать функцию [скажем, foo1()] и возвращает значение. Функция foo1() вызывает другую функцию [say foo2()], которая возвращает чистую форму html в ответ на вызов (когда вызывается короткий код).
РАЗДЕЛ 2: В этом разделе я определил функцию foo2(), в которой определена форма html [форма входа] и возвращается в foo1() [где она отображается]. Затем я создал действие [add_action ('init', 'validate_login_user'); ], который будет вызывать функцию validate_login_user() при инициализации, внутри этой функции я проверил на isset (METHOD [имя пользователя]) и isset (METHOD [пароль]), а затем выполнил соответствующую логику.
Как это я создал несколько [шорткоды] для каждой из страниц, которые я хотел создать в момент активации, Тогда:
**step 1:** register_activation_hook(__FILE__,'activation_plugin');
**step 2:** activation_plugin(){
'390' => [ // '390' is page id
'post_title' => 'Page title say login',
'post_content' => "[user_login]",
'post_status' => 'publish',
'post_type' => 'page',
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_category' => array(1)
],
'391' => [
'post_title' => 'page title 2',
'post_content' => "[short_code2]",
'post_status' => 'publish',
'post_type' => 'page',
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_category' => array(1)
],
// like this add multiple shortcodes
}
// this foreach will create all the pages
foreach ($_ as $key => $value) {
$the_page_title = $value['post_title'];
$the_page_name = $value['post_title'];
// the menu entry...
delete_option($value['post_title']);
add_option($value['post_title'], $the_page_title, '', 'yes');
// the slug...
delete_option($value['post_title']);
add_option($value['post_title'], $the_page_name, '', 'yes');
// the id...
delete_option($key);
add_option($key, '0', '', 'yes');
$the_page = get_page_by_title($the_page_title);
if (! $the_page) {
$the_page_id = wp_insert_post($value);
}
else {
$the_page_id = $the_page->ID;
$the_page->post_status = 'publish';
$the_page_id = wp_update_post($the_page);
}
delete_option($key);
add_option($key, $the_page_id);
}
Спасибо, что это работает - upvoted –