【问题标题】:WordPress Plugin: custom edit page in admin area?WordPress 插件:管理区域中的自定义编辑页面?
【发布时间】:2018-11-07 20:16:48
【问题描述】:

我制作了自己的插件,允许用户通过电子邮件订阅。我创建了 mysql 表,当用户订阅前端电子邮件时,将写入我的表。

现在我需要一些后端功能。我有一个包含所有用户数据(姓名、电子邮件等)的表格。但现在我需要删除和编辑特定的行。

如何在 wordpress 管理区域中制作自定义编辑页面?在我自己的网址上?类似于: /wp-admin/admin.php?page=subscribe-plugin&do=edit&id=10 ?以及如何在那里显示html表单?那么如何进行post查询呢?要更改数据库吗?

我阅读了所有手册和“法典”,但不知道该怎么做。

【问题讨论】:

  • 有很多关于为 WordPress 插件创建自定义管理页面的教程。你有没有尝试过这些?如果是这样,你有没有卡在某个地方?分享您的代码,我们会为您提供帮助。
  • @cabrerahector 是的,我试过了,当然。我得到的只是:我可以为它制作菜单项和页面。但我需要真正的自定义页面和我的 html 表单和它的处理程序。
  • @brasofilo 抱歉,但这不是我想要的。使用自定义帖子太难了。我只需要一些工具来在 wordpress 中制作我自己的 html 表单并进行处理。我发现了如何制作没有菜单项的页面。并在其上制作了 html 表单(编辑我自己的项目)。好的,这很好。但是如何处理这个表单的 post 查询呢?..
  • 如果您的代码有新问题,请打开新问题。

标签: wordpress


【解决方案1】:

第一步是使用add_menu_page()函数创建一个顶级管理页面。

add_action( 'admin_menu', 'my_admin_menu' );

function my_admin_menu() {
    add_menu_page( 'My Top Level Menu Example', 'Top Level Menu', 'manage_options', 'subscribe-plugin/subscribe-plugin-admin-page.php', 'subscribe-plugin_admin_page', 'dashboard-tickets', 6  );
}

该函数接受七个参数。

$page_title (string) (必填) 选择菜单时页面标题标签中显示的文本。

$menu_title (字符串)(必需)用于菜单的文本。

$能力 (字符串)(必需)向用户显示此菜单所需的能力。

$menu_slug (字符串)(必需)引用此菜单的 slug 名称。此菜单页面应该是唯一的,并且只包含小写字母数字、破折号和下划线字符以与 sanitize_key() 兼容。

$函数 (callable) (可选) 调用该函数以输出此页面的内容。 默认值:''

$icon_url (字符串)(可选)用于此菜单的图标的 URL。 * 使用数据 URI 传递一个 base64 编码的 SVG,它将被着色以匹配配色方案。这应该以 'data:image/svg+xml;base64,' 开头。 * 传递 Dashicons 辅助类的名称以使用字体图标,例如'dashicons-chart-pie'。 * 传递 'none' 将 div.wp-menu-image 留空,以便可以通过 CSS 添加图标。 默认值:''

$位置 (int)(可选)这个应该出现在菜单顺序中的位置。 默认值:空

下一步是创建页面内容。您需要做的就是创建参数 5 中定义的函数并回显您的表单。

function subscribe-plugin_admin_page(){
    ?>
    <div class="wrap">
        <h2>Welcome To My Plugin</h2>
        //Your form here
    </div>
    <?php
}

带有额外查询参数的示例管理页面 URL:

$query_args = array( 'page' => 'your-plugin-page', 'do' => 'edit' );
echo add_query_arg( $query_args, admin_url( 'subscribe-plugin/subscribe-plugin-admin-page.php' ) );

【讨论】:

  • 我明白了!因此,我只需要使用一个函数(在您的示例中为 subscribe-plugin_admin_page)来显示所有不同的页面并根据我得到的 GET 参数处理所有不同的帖子查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 2012-07-22
  • 1970-01-01
  • 2019-03-07
  • 1970-01-01
  • 2018-04-13
相关资源
最近更新 更多