Зарегистрировал произвольную запись и таксономию, в файле function.php
Через следующий код:
add_action( 'init', 'register_article_post' );
function register_article_post() {
register_taxonomy('article_post', array('article'), array(
'label' => 'Раздел статьи', // определяется параметром $labels->name
'labels' => array(
'name' => 'Разделы статей',
'singular_name' => 'Раздел статьи',
'search_items' => 'Искать раздел статей',
'all_items' => 'Все разделы статей',
'parent_item' => 'Родит. раздел статьи',
'parent_item_colon' => 'Родит. раздел статьи:',
'edit_item' => 'Ред. раздел статей',
'update_item' => 'Обновить раздел статей',
'add_new_item' => 'Добавить раздел статей',
'new_item_name' => 'Новый раздел статей',
'menu_name' => 'Разделы статей',
),
'description' => 'Рубрики для раздела статей', // описание таксономии
'public' => true,
'show_in_nav_menus' => false, // равен аргументу public
'show_ui' => true, // равен аргументу public
'show_tagcloud' => false, // равен аргументу show_ui
'hierarchical' => true,
'rewrite' => array('slug'=>'article', 'hierarchical'=>false, 'with_front'=>true, 'feed'=>false ),
'show_admin_column' => true, // Позволить или нет авто-создание колонки таксономии в таблице ассоциированного типа записи. (с версии 3.5)
) );
register_post_type('article', array(
'label' => 'Статьи',
'labels' => array(
'name' => 'Статьи',
'singular_name' => 'Статья',
'menu_name' => 'Статьи',
'all_items' => 'Все статьи',
'add_new' => 'Добавить статью',
'add_new_item' => 'Добавить новую статью',
'edit' => 'Редактировать',
'edit_item' => 'Редактировать статью',
'new_item' => 'Новая статья',
),
'description' => '',
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_rest' => false,
'rest_base' => '',
'show_in_menu' => true,
'menu_icon' => 'dashicons-align-left',
'menu_position' => 4,
'exclude_from_search' => false,
'capability_type' => 'post',
'map_meta_cap' => true,
'hierarchical' => false,
'rewrite' => true,
'has_archive' => 'article',
'query_var' => true,
'supports' => array( 'title', 'editor' ),
'taxonomies' => array( 'article_post' ),
) );
}
## Отфильтруем ЧПУ произвольного типа
// фильтр: apply_filters( 'post_type_link', $post_link, $post, $leavename, $sample );
add_filter('article_post_link', 'article_permalink', 1, 2);
function article_permalink( $permalink, $post ){
// выходим если это не наш тип записи: без холдера %products%
if( strpos($permalink, '%article_post%') === false )
return $permalink;
// Получаем элементы таксы
$terms = get_the_terms($post, 'article_post');
// если есть элемент заменим холдер
if( ! is_wp_error($terms) && !empty($terms) && is_object($terms[0]) )
$term_slug = array_pop($terms)->slug;
// элемента нет, а должен быть...
else
$term_slug = 'no-article_post';
return str_replace('%article_post%', $term_slug, $permalink );
}
add_filter('excerpt_more', function($more) {
return '...';
});
И при открытии страницы записи возникает ошибка 404. Меняю настройки постоянных ссылок с "Название записи" на "Простые" и всё начинает работать, но такой вариант не устраивает. Перепробовал уже несколько вариантов. Менял настройки и сбрасывал htaccess. Изменял сам файл htaccess. Не помогает... Подскажите пожалуйста, как исправить данную ошибку?