WP:使用WP-Permalinks和PageTemplate显示来自其他数据库的产品?

时间:2013-01-26 16:34:26

标签: wordpress apache mod-rewrite permalinks

很想得到你的帮助。

我的情况: 所以我让我的用户创建自己的产品。让我们说它的衣服包含领带,衬衫和鞋子。我允许他们保存这件衣服。我的脚本在没有连接到wordpress的数据库中保存图片和一些关于装备的更多信息。在我的数据库中,每个服装都有自己独特的ID。它也有一个名字。

我的情况: 首先,我希望将该装备中的名称和ID放入URL中 所以我用户将能够链接到他新创建的服装 所需的URL架构是:

http://www.mydomain.com/outfits/funky-shirt-blue-tie-outfit/o12345  

或:

http://www.mydomain.com/outfits/{%outfitTitle%}/o{%outfitID%}  

其次我想使用wordpress页面或后期模板来显示装备图片。

我的问题: - 我不想为每件衣服创建一个页面/帖子 - 每个服装都不会作为页面或帖子存储在wordpress数据库中。

到目前为止我找到了什么: 我找到了一个mod重写工具http://www.generateit.net/mod-rewrite/
我阅读了那些文档http://codex.wordpress.org/Function_Reference/register_post_type
http://codex.wordpress.org/Template_Hierarchy,但没有得到任何地方。

有谁可以帮助我?

1 个答案:

答案 0 :(得分:1)

您必须处理自定义重写规则和自定义query_vars。否则很简单。

首先,创建自定义页面模板。创建php文件很简单,至少包含以下代码:

<?php /* Template Name: Outfit */ ?>

您可以在WP管理员中创建一个页面并为其分配新的页面模板。请注意此页面ID。你以后需要它!

现在,让我们注册自定义重写规则。要注册自定义重写规则,您必须将此代码添加到functions.php

add_action( 'generate_rewrite_rules', 'outfit_rewrite_rules' );
function outfit_rewrite_rules( $wp_rewrite )
{
    $outfit_page_id = 3; //get ID of your page with custom template for displaying outfit
    $wp_rewrite->rules = array(
        'outfit/?([a-zA-Z0-9]{1,})/?([0-9]{1,})/?$' => $wp_rewrite->index . '?page_id='. $outfit_page_id .'&outfit_ename=' . $wp_rewrite->preg_index( 1 ) . '&outfit_id=' . $wp_rewrite->preg_index( 2 ),
    ) + $wp_rewrite->rules;
}

此代码将使用自定义页面模板将包含URL中的装备的所有流量重写为在步骤1中创建的自定义页面,并在-URL中包含“outfit_name”和“outfit_id”。但要访问这些变量,您必须注册自定义查询变量。通过此代码,再次在模板的functions.php中

add_filter( 'query_vars', 'outfit_query_vars' );
function outfit_query_vars( $vars ) {
    $vars[] = 'outfit_name';
    $vars[] = 'outfit_id';
    return $vars;
}

然后,您可以通过以下代码在自定义页面模板中加入它们:

$outfit_id = get_query_var('outfit_id');
$outfit_name = get_query_var('outfit_name');

很容易连接到您的数据库并获得所需的条目,不是吗?用于输入数据库的PHP代码将在您的装备页面模板中 - 在打开评论后。