Php 将第三方Web服务API实现为';第'页;在Wordpress中

Php 将第三方Web服务API实现为';第'页;在Wordpress中,php,json,wordpress,curl,Php,Json,Wordpress,Curl,我正在使用构建Wordpress站点的一个部分,该部分使用构建在旧数据库之上的API,该数据库需要保持tact。API非常简单,只能通过两种方式访问: mysite.com/monkeys/ <-- This corresponds to calling the API as '/api/monkeys/list' mysite.com/monkey/william <-- Calling the API as '/api/monkeys/:name' mysite.

我正在使用构建Wordpress站点的一个部分,该部分使用构建在旧数据库之上的API,该数据库需要保持tact。API非常简单,只能通过两种方式访问:

mysite.com/monkeys/     <-- This corresponds to calling the API as '/api/monkeys/list'
mysite.com/monkey/william    <-- Calling the API as '/api/monkeys/:name'

mysite.com/monkeys/为什么不创建这些资源。。。那他们就不会是404了

我们已经在OMBE上成功地使用了这种方法;我们只是创建了脚本(在您的例子中,它们是“monkey”和“monkey”),它们是其他东西的包装器(比如您的例子中的API),并使用ApacheForceType指令(指向application/x-httpd-php5)来处理它们

嗯,

您可以添加一个。以下示例仅检测根()上的端点。如果我们访问
example.com/monkeys/
,它会被认为是您的
/api/monkeys/list
。当访问
example.com/monkeys/name
时,它是您的
/api/monkeys/:name

如果确实要将猴子与乐队分开,请添加另一个端点

add_action( 'init', function()
{
    add_rewrite_endpoint( 'monkeys', EP_ROOT );
});

add_filter( 'query_vars', function( $vars )
{
    $vars[] = 'monkeys';
    return $vars;
});
此代码需要在
设置>>永久链接>>保存中手动刷新永久链接,但可以

为了测试端点,我使用了以下方法:

add_action( 'wp_footer', function(){
    // set default as 'empty', so we can differentiate the root from no query var
    $monkeys = get_query_var( 'monkeys','empty' ); 
    if( 'empty' === $monkeys ) {
        printf( '<h1 style="font-size:4em">%s</h1>', 'NOT SET' );
    }
    else if( '' === $monkeys ) {
        printf( '<h1 style="font-size:4em">%s</h1>', 'Endpoint root.' );
    } 
    else {
        printf( '<h1 style="font-size:4em">Sent query: %s</h1>', urldecode( $monkeys ) );
    }
});
add_操作('wp_footer',function(){
//将default设置为“empty”,这样我们就可以区分root和no查询变量
$monkeys=get_query_var('monkeys','empty');
如果('empty'==$monkeys){
printf(“%s”,“未设置”);
}
else if(“”===$monkeys){
printf(“%s”,“端点根”);
} 
否则{
printf('Sent query:%s',urldecode($monkeys));
}
});

难道你不能创建一个自定义的Wordpress模板,使用PHP获取并修剪URL,然后使用这些数据调用外部API吗?我现在这样做是作为一个临时解决方案,但我想我更想知道如何将其与Wordpress搜索相结合。有什么想法吗?据我所知,WordPress搜索通过搜索每篇文章/页面的标题和内容来工作。我认为最简单的方法是每次运行PHP代码从API获取数据时更新post内容。这意味着,除了显示API中的数据外,还可以将其保存到
wp\u posts
表的
post\u content
字段中。显然,您还必须确定表中的哪一行对应于当前页面,但这应该不是很难做到。谢谢!看起来是朝着正确的方向迈出的一步。我会把这记在心里,在法典里多翻一翻。很高兴我能帮上忙,祝你好运!