WordPress中的完全自定义页面由插件生成

时间:2015-09-27 19:16:05

标签: wordpress plugins

我正在编写一个带有AJAX元素的WordPress插件 - 前端使用AJAX从插件中获取HTML块。

我很难在这里加入这些作品,我怀疑它只是一个术语问题。我如何实现插件完全提供的页面?

  • 页面内容为HTML - 插件可以生成此内容以响应POST或GET参数。
  • 需要有一个指向此页面的路径。该路由不一定是用户友好的或REST样式 - 只是某种到达插件的URI。有没有办法注册一个具有任意名称的自定义页面,而不必将其创建为WP帖子?
  • 我希望所有这些都能够自包含在插件中,因此不应让管理员不得不创建帖子或页面,或者必须向主题添加任何内容。
  • 理想情况下,我会避免任何进入wp-admin目录的URL。最终用户不属于此。

1 个答案:

答案 0 :(得分:0)

我强烈建议您参考https://codex.wordpress.org/AJAX_in_Plugins#Ajax_on_the_Viewer-Facing_Side

你需要在你的插件目录中有一个php脚本,它返回你请求的内容,你需要在运行时确定该url以供你的ajax参考。以上链接提供了一个示例,用于排队并使用wp_localize_script()为您的自定义php脚本提供网址。

wp_enqueue_script( 'ajax-script', 
        plugins_url( '/js/my_query.js', __FILE__ ), array('jquery') );

  // in JavaScript, object properties are accessed as 
  //  ajax_object.ajax_url, ajax_object.we_value
  wp_localize_script( 'ajax-script', 'ajax_object',
            array( 'ajax_url' => plugins_url( '/php/myapi.php' ));

您的javascript文件将包含在每个页面上,并会在页面上侦听需要HTML块的事件,如您所描述的那样。

您的文件myapi.php然后需要接受请求,可能使用查询字符串,从wordpress api获取相应的内容,并使用您的javascript将实现的所述内容进行回复。

虽然也可以访问wordpress api,但有两种选择:

  1. 强制wordpress从您的文件开始,including wp-load.php。这可能不是最干净的方式。
  2. 设置custom page or slug以指向您的插件。
  3. 我会建议第二个选项,并建议一个slug,在这种情况下你可能会发现这篇文章有用:wp_rewrite in a WordPress Plugin

    根据Jason的评论,基于以上链接:

      

    重写规则被大量提及,但实际上是一种分心 -   他们只是帮助使URL看起来更“友好”,这不是一个   这里的目标。关键是:注册自定义GET参数;寻找   该参数在页面渲染过程的早期;如果你找到了   参数设置,然后输出/回显填充和die()。有一个   可用于查看所选参数的挂钩数量   取决于你希望WP首先设置和处理多少。