在自定义发布类型URL中使用自定义字段

时间:2012-10-03 作者:Rhys Wynne

我正在开发一个有展厅的汽车网站。每个展厅都需要基于其位置的自定义URL。位置(城市和县/州)已作为两个自定义字段插入。例如,如果是位于默西塞德郡利物浦的“展厅A”,其URL如下:-

http://www.domain.com/location/merseyside/liverpool/showroom-a/

我有一个自定义的post类型“Showroom”,它的重写规则设置为false(尽管之前在测试中设置为true)。然而,当我创建有问题的帖子时,出现了一个问题。permalink是指除展厅名称以外的所有内容(即。http://www.domain.com/location/merseyside/liverpool/). 访问此URL会导致404错误,甚至会在代码末尾添加“showroom-a”(例如)(http://www.domain.com/location/merseyside/liverpool/showroom-a/), 也会导致404错误。这是我的密码。

function add_rewrite_rules()
{
    // Register custom rewrite rules

    global $wp_rewrite;

    $wp_rewrite->add_rewrite_tag(\'%showroom%\', \'([^/]+)\', \'showroom=\');
    $wp_rewrite->add_rewrite_tag(\'%post_custom_data%\', \'([^/]+)\', \'post_custom_data=\');
    $wp_rewrite->add_permastruct(\'showroom\', \'location/%post_custom_data%\', false);

}

function permalinks($permalink, $post, $leavename)
{
    $no_data = \'no-data\';
    $post_id = $post->ID;

    if($post->post_type != \'showroom\' || empty($permalink) || in_array($post->post_status, array(\'draft\', \'pending\', \'auto-draft\'))) {
        return $permalink;
    }

    $state = sanitize_title_with_dashes(get_post_meta($post_id, \'state\', true));
    $city =  sanitize_title_with_dashes(get_post_meta($post_id, \'city\', true));
    $data = $state . "/" . $city;

    if (!$data) {
        $data = $no_data;
    }

    $permalink = str_replace(\'%post_custom_data%\', $data, $permalink);

    return $permalink;    
}

add_action(\'init\', \'add_rewrite_rules\');
add_filter(\'post_type_link\', \'permalinks\', 10, 3);
任何想法或帮助都将不胜感激:)

1 个回复
SO网友:Rhys Wynne

我设法解决了这个问题。

基本上,我将permastruct改为:

$wp_rewrite->add_permastruct(\'showroom\', \'location/%state%/%city%/%showroom%\', false);
然后我抓住了state&;城市作为两个独立的变量,使用以下行将其替换为永久性链接结构:

$permalink = str_replace(\'%state%\', $state, $permalink);
$permalink = str_replace(\'%city%\', $city, $permalink);
使用$state &;$city 使用抓取get_post_meta 从邮局。

结束

相关推荐

WordPress:使用Category Slug通过MySQL查询获取类别ID

基本上,我有一个存储了类别slug的cookie,我想使用这些数据查询数据库并返回类别的ID。我是mysql新手,这似乎是一个高级查询,可能需要使用连接,如果您有任何帮助或指导,我将不胜感激。非常感谢。参考号:http://codex.wordpress.org/File:WP3.0-ERD.png