Usando campos personalizados no URL personalizado de tipo de postagem

4

Estou desenvolvendo um site de carros que tem showrooms. Cada showroom precisa de seu próprio URL personalizado com base em sua localização. O local (Cidade e Condado / Estado) já está inserido como dois campos personalizados. Então, por exemplo, se for "Showroom A", localizado em Liverpool, Merseyside, sua URL seria a seguinte: -

enlace

Eu tenho um tipo de postagem personalizado de "Showroom", que tem suas regras de reescrita definidas como false (embora tenha sido definido anteriormente como true anteriormente no teste). No entanto, quando eu crio a postagem em questão, há um problema. O permalink é dado como tudo BAR o nome do showroom (ou seja, enlace ). Visting this URL causa um erro 404, e até mesmo adicionando "showroom-a" (por exemplo) ao final do código (http://www.domain.com/location/merseyside/liverpool/showroom-a/), também causa um erro 404. Aqui está o meu código.

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);

Qualquer ideia ou ajuda seria apreciada:)

    
por Rhys Wynne 03.10.2012 / 17:50

1 resposta

3

Consegui corrigir isso.

Basicamente eu mudei o permastruto para isso:

$wp_rewrite->add_permastruct('showroom', 'location/%state%/%city%/%showroom%', false);

Eu então peguei state & cidade como duas variáveis separadas, substituindo-a na estrutura do permalink usando estas linhas:

$permalink = str_replace('%state%', $state, $permalink);
$permalink = str_replace('%city%', $city, $permalink);

com $state & $city pegou usando get_post_meta da postagem.

    
por Rhys Wynne 04.10.2012 / 11:31