自定义插件 - 将数据从主页发布到插件中的另一个页面

时间:2017-11-06 17:27:35

标签: wordpress custom-wordpress-pages

我创建了一个新的自定义插件,它添加了一个新的管理菜单来显示事件列表。当您单击任何给定的事件时,我想将您发送到我的插件中的另一个页面,然后该页面将呈现有关此事件的信息。我可以保持简单并只使用查询字符串参数,因此不需要进行表单POST,但我也会对此感兴趣。

有两页:

  1. /my-plugin/reservation-management.php
  2. /my-plugin/reservation-management-details.php
  3. 我在基页的设置(reservation-management.php):

    add_action( 'admin_menu', 'addReservationManagementMenuItem' );
    
    function addReservationManagementMenuItem(){
    
    add_menu_page('Reservation Management', 'Reservation Management', 'manage_options', 'reservation_management_slug', 'reservation_management_building_function','',3);
    
    } 
    

    在构建第一个屏幕的功能中,我渲染了一些可点击的链接。简化:

    function reservation_management_building_function(){
    
    if(!current_user_can('manage_options')){
      ?>
    
        <h2>Clickable Link</h2>
        <?php echo("<a href='reservation-management-details.php?id=$id'>Event</a>"); ?>
    
     <?php 
       }
    }
    ?>
    

    我只是简化了代码,删除了一些循环逻辑等,但是它工作并在循环中呈现所有事件的url of reservation-details.php?id = x其中x是唯一的post id每个事件。

    问题是,这只是将我发送到找不到的页面。我甚至尝试过像get_admin_url()等

    这样的东西

    我认为我错过了自定义插件如何在一个页面之间发布的基本步骤,同时仍然在wp-admin中。

    如何使用href将admin用户安全地发送到我的插件目录中的另一个管理页面?

    谢谢!

1 个答案:

答案 0 :(得分:1)

页面是否已在插件中声明?听起来您还需要在插件中添加子菜单页面。

示例(已编辑):

add_action( 'admin_menu', 'addReservationManagementMenuItem' );

function addReservationManagementMenuItem(){

add_menu_page('Reservation Management', 'Reservation Management', 'manage_options', 'reservation_management_slug', 'reservation_management_building_function','',3);

//add any relative submenu pages here
//you can have as many submenu pages as you need
//please keep in mind that add_submenu_page() requires a different set 
//of parameters passed to it

//if you want the submenu page viewed, and your function exists on your 
//plugin definition page
add_submenu_page('reservation-management-details.php', 'Reservation Management Details', 'Reservation Management Details', 'manage_options', 'reservation_management_details_slug'); 

//if you don't want your submenu page accessible in the submenu
//use null as the first parameter to remove it's inclusion from the submenu
//specify the php file used 
add_submenu_page(null, 'Reservation Management Details', 'Reservation Management Details', 'manage_options', 'reservation-management-details.php');


} 

在上面的示例中,您可以在插件中发布新页面,因为您现在已经定义了它。但有时候,我发现我希望任何人能够访问我指定为“_POST”的页面。只有,所以我的第一个参数设置为 null

编辑: 我唯一能记住的就是那个POST网址需要的东西。如果您需要帮助,请告诉我,我会为您解决。

如果您有任何疑问,请与我们联系。