0

Ну, я создаю свой первый плагин wordpress, который должен создать страницу (относительно большую) при активации.Добавить html/PHP-страницы в активации плагинов (Wordpress)

В настоящее время я могу создать файл с помощью:

$_p['post_title'] = $the_page_title; 
     $_p['post_content'] = '<h1>PAGE CONTENT</h1>'; 
     $_p['post_status'] = 'publish'; 
     $_p['post_type'] = 'page'; 
     $_p['comment_status'] = 'closed'; 
     $_p['ping_status'] = 'closed'; 
     $_p['post_category'] = array(1); // the default 'Uncatrgorised' 

     // Insert the post into the database 
     $the_page_id = wp_insert_post($_p); 

Проблема заключается в том, я не могу поставить все содержимое файла (который является большим) в виде строки с индексом «POST_CONTENT». Я хочу знать, если есть способ, где я могу просто как:

  1. «POST_CONTENT» => ссылка на файл в моем каталоге плагина
  2. «POST_CONTENT» => вызвать функцию, которая будет возвращать HTML содержание в виде строки :([худший случай]
  3. OR, некоторые более простой способ для достижения этой цели.

Пожалуйста, помогите мне.

ответ

0

Ну, что я сделал, чтобы решить эту проблему является:

//**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); 
    } 
1

Создать страницу на плагин активации с содержанием

$page_content= 'Content of page'; 
$demo_page = array(
     'comment_status' => 'closed', 
     'ping_status' => 'closed' , 
     'post_author' => 1, 
     'post_content' => $page_content, 
     'post_date' => date('Y-m-d H:i:s'), 
     'post_name' => 'page_name',//display on address bar 
     'post_status' => 'publish' , 
     'post_title' => 'Page Display Name', 
     'post_type' => 'page', 
); 
//insert page and save the id 
$demo_page_value = wp_insert_post($demo_page, false); 
//save the id in the database 
update_option('testpage', $$demo_page_value); 
+0

Спасибо, что это работает - upvoted –