WordPress add_rewrite_tag для условного параметра - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть пользовательский тип записи "свойство", и я хочу изменить URL-адрес одного свойства. Я хочу добавить мета значения записи в сообщение с одним свойством. У меня есть 2 мета поля города и штата. требуется указать штат, а город является условным. Если город не управляется в мета-записи, то URL-адрес одного поста не будет включать это. Если я использую оба мета-значения, мой URL будет / proprty / штат / город / POSTNAME

И если я буду управлять только мета-значением состояния, тогда мой URL будет / proprty / state / POSTNAME

Пока я используя приведенный ниже код, если вы управляете мета-значением для штата и города, он будет работать нормально, а когда я не управляю значением города, он отобразит страницу архива.

add_action('init', function(){
    add_rewrite_tag('%state%', '([^/]+)');
    add_rewrite_tag('%city%', '(.+?)');
});

function generateDFPropertyUrl( $permalink, $post, $leavename ){
    if (stripos($permalink, '%state%') == false) return $permalink;
    if ( is_object($post) && ('iwp_property' == $post->post_type) ){
    if( get_post_meta( $post->ID, 'state', true ) ){
        $city       = get_post_meta( $post->ID, 'state', true );
        $hoof       = get_post_meta( $post->ID, 'city', true );

        $city = str_replace(' ','-',strtolower($city));
        $hoof = str_replace(' ','-',strtolower($hoof));
        if( !empty($city) && !empty($hoof) ){
            $permalink = str_replace('%state%', $city, $permalink);
            $permalink = str_replace('%city%', $hoof, $permalink);
        }elseif(!empty($city) && empty($hoof)) {
            $permalink = str_replace('%state%', $city, $permalink);
            $permalink = str_replace('%city%/', '', $permalink);
        }
    } 
    }
    return $permalink;
}
add_filter('post_type_link', 'generateDFPropertyUrl', 10, 3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...