Переписать URL-адреса пользовательских типов записей, чтобы включить слаг и поле ACF - PullRequest
0 голосов
/ 06 февраля 2019

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

Я бы хотел, чтобы 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?

...