У меня есть пользовательский тип записи "свойство", и я хочу изменить 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);