使用模板创建自定义URL以获取外部JSON

时间:2017-02-03 作者:László Bognár

大家好,希望你们能帮忙。

所以我有一个WP站点和一个外部JSON enpoint(不是来自另一个WP),我想要实现的是在wordpress中创建动态的“假”URL,如:示例。com/product/{{product\\u slug}}}输入这个URL后,我想用这个slug获取我的JSON端点,类似于:externalsite。com/api/v1/product/{{product\\u slug}}位于模板内,例如单个产品。php

我用add\\u filter(\'template\\u inclide\')和查看url实现了类似的功能,但这太粗糙了。

我还发现也许我应该使用add\\u rewrite\\u rule(),但没有找到如何在没有重定向的情况下使用它。

注意:我不想创建自定义帖子类型。

如果你需要任何关于我要实现的目标的其他信息,请询问。我不想让你为我写代码,但要把我带向正确的方向。提前谢谢。

1 个回复
SO网友:László Bognár

结果对我来说,这真的是星期五。

感谢@eddiemoya和@matt keys在this question.

他们的回答对我帮助很大。在他们解释之后,我再次访问了Wordpress documentation 这真的不难理解。

我针对具体问题使用的解决方案如下:

我在WP中创建了一个页面。我给it产品命名(slug:example.com/Products)

  • 在我的主题根目录中创建了一个模板,并为其设置了模板名称

    /** 
     * Template Name: My single product page
     */
    
  • 从我的产品页面管理界面内的模板下拉列表中选择了“我的单一产品页面”

    在函数中复制了页面ID(1234)。php我编写了以下代码:

    funtion product_api_rewrite_tag() {
        add_rewrite_tag(\'%product_slug%\', \'([^&]+)\');
    }
    
    function product_api_rewrite_rule() {
        add_rewrite_rule(\'^products/([^/]*)/?\',\'index.php??page_id=1234&product_slug=$matches[1]\',\'top\');
    }
    
    add_action(\'init\', \'product_api_rewrite_tag\', 10, 0);
    add_action(\'init\', \'product_api_rewrite_rule\', 10, 0);
    
    在“我的单一产品页面”中,我可以这样做:

    global $wp_query;
    $pension_slug = $wp_query->query_vars[\'pension_slug\'];
    
    echo $pension_slug;
    
    查看示例。com/products/my\\u new\\u产品模板将返回my\\u new\\u产品。