表单操作/链接以在WordPress前端呈现插件

时间:2018-02-03 作者:Alessio Firenze

我是WordPress的新手,我想知道是否有人能帮助我理解在前端提交一个小部件表单时,我应该如何呈现插件的输出。

我正在开发一个插件,它有两个“视图”和一个小部件。小部件只是一个带有下拉菜单的表单,用于从列表中选择值。选择值后,表单应将该值提交到呈现插件第一个视图的页面。第一个视图应该打印将访问者带到第二个视图的链接。就像第一个视图是行列表,第二个视图是从第一个视图中选择的行的详细信息一样。我的小部件的表单应该知道数据应该发布到哪个URL。This is the goal.

我一直在读Plugin API, 但我似乎没有找到一个合适的解决方案。我的问题是:我应该只依靠Shortcodes, 以前放在某些页面上,以在前端呈现插件?这是唯一的办法吗?

我试图提交一个自定义action 以我的小部件的形式(带操作get_admin_url().\'admin-post.php\'), 并将其挂接到插件中:

add_action(\'admin_post_customaction\', \'handle_customaction\');
add_action(\'admin_post_nopriv_customaction\', \'handle_customaction\');
function (handle_customaction) {
    //do something
}
但是页面管理帖子。php会截断执行,所以我想这种做法只是为了执行某些任务,然后重定向,而不是在前端显示页面内的内容。

除了使用短代码,还有什么解决方案吗?因为我的问题是“我应该在小部件的形式中使用哪个动作属性?”,比如,我如何知道哪些页面使用了我需要的短代码?

可能通过创建自定义post type 在插件中?我不需要在网站的管理部分任何特别的东西。然而,至少在那里,WordPress通过链接调用了我的插件wp-admin/admin.php?page=myplugin 我的主回调被调用。但是前端呢?

我错过什么了吗?我不想依赖主题的代码。任何提示都将不胜感激!谢谢

1 个回复
SO网友:Joy Reynolds

我认为你把事情复杂化了。您根本不需要小部件。您只需要一个输出带有select的表单的快捷码,如果选择了某个内容,还需要输出数据。这些数据可能是第一个视图,也可能是第二个视图,具体取决于嵌入在链接和表单中的参数。因此,短代码所在的页面控制着整个过程。这样,它不仅限于在站点上使用一次,尽管您可能应该包括define 在您检查的短代码中,以便每页只能使用一次。

表单不需要action属性,因此它将由它所在的当前页面处理。它需要具有显示的视图的当前值,第一个视图的链接需要具有第二个视图的值。这使得它必须使用GET 而不是POST, 地址栏上看起来更混乱。因此,如果您可以将第一个视图更改为使用按钮或其他内容来代替链接,那么您可以使用POST.

结束

相关推荐

Shortcode syntax errors

试图编写一个短代码来创建库,但我遇到了一个分析错误。我的foreach 循环需要校正并返回正确的输出。有什么帮助吗?function allphotos_shortcode(){ $images = get_field(\'fl_gallery\'); if( $images ) { $output .= \'<ul>\'; foreach( $images as $image ) :