Wordpress使用自定义表数据的固定链接创建自定义页面

时间:2017-10-12 15:31:00

标签: php mysql wordpress permalinks

我有1个自定义表(不是wp核心表),其中是导入的特定产品。我已经设置了自定义wp页面,其中列出了这些产品,自定义过滤器创建等。到目前为止,这一步一切正常 - 产品列出并过滤工作,分页工作......

但我现在想要进一步扩展 - 点击产品列表页面中的产品名称时打开每个产品页面(例如/ product-listing-page / product-name-1)...如何实现这一目标wp_posts“表?

为什么我没有使用wp_posts表:网站有静态页面和动态帖子,因为新闻和产品表每天晚上被截断并重新导入一次!因此,当产品列表是动态的并且在每次导入之前完全截断时,无法真正使用wp_posts页面...

有什么想法吗?也许有人已经做过这样的事了吗?; - )

2 个答案:

答案 0 :(得分:0)

我不知道您是否开发了一个插件来处理您创建的所有自定义表格和代码,但如果您没有,我强烈建议您这样做。

因为通过将你的代码作为一个插件,你有机会使用wordpress的所有组合,比如重写规则系统,我认为,它可以帮助你实现你的目标。

我之前为一个我负责的网站创建了一个插件,我需要在网站(worpdress)网址系统中显示一个自定义页面,如果我正确理解你的问题,这就是你想要做的。 不幸的是,插件已经发展了,我没有保留该代码的备份,但是如果我没记错的话我是怎么回事的,这是我遵循的粗略方法:

我创建了一个处理:

的插件
  • 自定义数据库表
  • 自定义php对象
  • ...

AND(这是有趣的部分)将重写规则添加到wordpress重写规则系统中,如下所示:

  1. 设置重写标记(初始化操作)(如果需要)
  2. 添加重写规则(init action)
  3. 拦截网址并解析它以获取我在自定义中需要的参数 page(parse_request action)
  4. 以下功能可以帮助您:

    你需要加入:

    希望它可以帮助你开始。

答案 1 :(得分:0)

解决方案非常快捷方便!根据我的需要,只需注册全局查询var:

即可
    function register_new_query_var($vars) {
        $vars[] = 'product_id';
        return $vars;

    add_filter('query_vars', 'register_new_query_var');

然后我更改了页面产品列表页面的主题模板,用于产品列表和使用的个别产品 如果(!get_query_var( 'PRODUCT_ID'))。所以,如果查询为空 - 做列出的东西,如果不是空的 - 做个别产品的东西!

对我来说这已经足够了,我甚至不需要seo友好的网址(因为产品列表每天都在变化,所以 - 每天都会有新产品,链接,并且会有很多404错误)... < / p>

我可以使用http://example.com/product-listing-page?product_id=1和页面显示日期来自自定义表! ; - )