我是新的wordpress,我正在创建wordpress的扩展。我找了很多,但没有找到任何解决办法。也许我的问题是重复的,但我没有找到任何解决方法。我的问题是:
我想为我的扩展api创建一个自定义url。就像有些人会在那个url上发布数据,我会在数据库中保存数据。我的url应该是www.example.com/custom_url
我的url将没有页面和模板,这是一种web服务。
所以在我的扩展,我想当任何用户安装该扩展这个custom_url将自动为他们激活。
我试过add_rewrite_rule
, add_rewrite_endpoints
等。但没有成功。
请建议我或提供给我任何链接,其中描述。
根据WordPress论坛上的教程:
什么是端点?
使用端点允许您轻松地创建重写规则来捕获正常的WordPress url,但在最后有一点额外的。为例如,您可以使用一个端点来匹配所有post url"图库",并显示文章中使用的所有图像,例如:http://example.com/my-fantastic-post/gallery/。
完整教程在这里:https://make.wordpress.org/plugins/2012/06/07/rewrite-endpoints-api/
所以当你需要创建虚拟页面时,它是没有帮助的。
然而,根据WordPress Stack Exchange上的以下帖子,可以使用add_rewrite_rule
创建虚拟页面
如何在WordPress中创建一个"虚拟"页面
原文节选:
首先,我们添加一个重写规则,它添加了一个查询变量,然后我们做这个查询var public,然后我们需要检查这个是否存在查询var将控件传递给我们的插件文件。到我们找到的时候这样,通常的WordPress初始化就发生了(我们打破了)(在常规post查询之前)
add_action( 'init', 'wpse9870_init_internal' );
function wpse9870_init_internal()
{
add_rewrite_rule( 'my-api.php$', 'index.php?wpse9870_api=1', 'top' );
}
add_filter( 'query_vars', 'wpse9870_query_vars' );
function wpse9870_query_vars( $query_vars )
{
$query_vars[] = 'wpse9870_api';
return $query_vars;
}
add_action( 'parse_request', 'wpse9870_parse_request' );
function wpse9870_parse_request( &$wp )
{
if ( array_key_exists( 'wpse9870_api', $wp->query_vars ) ) {
include 'my-api.php';
exit();
}
return;
}
法典页add_rewrite_rule
1)。为虚拟页面创建操作
add_action( 'template_redirect', 'apicall' );
function apicall() {
$callapi = $_GET['API'];
if($callapi=='YOUR API Name'){
header('Content-Type: text/javascript; charset=utf8');
header("Access-Control-Allow-Origin: *");
header('Access-Control-Max-Age: 3628800');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
{{YOUR LOGIC}}
exit;
}
}
在浏览器上书写URL: www.YOURDOMAIN.com/?API=YOUR API NAME