У меня есть пользовательский тип сообщения, в котором есть расширенное поле настраиваемых полей, в котором хранится уникальное числовое значение для каждого сообщения.
Я бы хотел, чтобы URL для каждого из этих пользовательских сообщений был:
www.<site-url>/<normal-post-slug>/<acf-numeric-value>
Если значение ACF или пост-слаг не соответствуют ни одному посту, оно должно составлять 404.
Я пытался использовать add_rewrite_rule:
add_rewrite_rule(
'^<CUSTOM-POST-NAME>/([^&/]+)/([^&/]+)',
'index.php?&<CUSTOM-POST-NAME>=$matches[1]&<ACF-FIELD-NAME>=$matches[2]',
'top');
Я добавилПоле ACF как 'var' с использованием хука 'query_vars':
function add_query_vars_filter( $vars ){
$vars[] = "<ACF-FIELD-NAME>";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
Я также попытался добавить хук post_type_link, где я добавляю поле ACF в конец существующей ссылки для типа записи.
function postTypeLink($link, $post)
{
global $post;
global $wp_rewrite;
if (get_post_type($post) === '<POST-TYPE>') {
$acfVal = get_field('<ACF-FIELD>', $post->ID);
$newlink = $link . $acfVal;
return $newlink;
} else {
return $link;
}
}
add_filter('post_type_link', 'postTypeLink', 13, 2);
Я могу получить работающий URL-адрес, но он все равно будет отображаться, даже если я изменю числовое значение ACF на другое.В моем примере выше я не совсем понимаю, как WP будет понимать смысл моего имени поля ACF, даже если оно будет добавлено как var.Где я должен подключить это к фактическому полю ACF?