yaleksandr89
@yaleksandr89
PHP developer

Как получить ссылку на архив закрепленной за постом таксономии в Wordpress?

Здравствуйте

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

Поясню, создан тип записи с таксономий:
Тип записи:
<?php
$labelsProjects = [
	// ...
];
$argsProjects   = [
	'public'             => true,
	'publicly_queryable' => true,
	'show_ui'            => true,
	'show_in_menu'       => true,
	'query_var'          => true,
	'label'              => null,
	'labels'             => $labelsProjects,
	'supports'           => [ 'title' ],
	'has_archive'        => true,
	'menu_icon'          => 'dashicons-awards',
	'menu_position'      => 26,
];
register_post_type( 'projects', $argsProjects );

Таксономия для него:
<?php
$labelsTaxonomyProjects = [
	// ...
];
$argsTaxonomyProjects   = [
	'labels'        => $labelsTaxonomyProjects,
	'public' => true,
	'show_ui' => true,
	'query_var' => true,
	'show_tagcloud' => false,
	'show_admin_column' => true,
	'default_term'  => [
		'name'        => 'Категория не выбрана',
		'slug'        => 'category-not-selected',
		'description' => 'Стандартная категория для проектов',
	],
];
register_taxonomy( 'type-work', [ 'projects' ], $argsTaxonomyProjects );


На странице получаю записи, которые закреплены за таксономией 'clients':
<?php
$projectsQuery = new WP_Query( [
    'post_type'      => 'projects',
    'post_status'    => 'publish',
    'posts_per_page' => 3,
    'type-work'      => 'clients',
    'order'          => 'ASC'
] );
?>
<?php if ( $projectsQuery->have_posts() ) : ?>
    <?php while ( $projectsQuery->have_posts() ) : $projectsQuery->the_post(); ?>
       // получаю посты
    <?php endif; ?>
<?php wp_reset_postdata(); ?>


Раньше у данного типа записи таксономий не было и я получал ссылку на архив следующим образом:
<a href="<?= get_post_type_archive_link( 'projects' ) ?>" class="btn btn_border">Все проекты</a>
(ведет на на архив записей /projects)

Сейчас же на страницах необходимо выводить посты определенной таксономии (это сделано), а вот получить ссылку на архив этих таксономий - не могу сообразить как. То есть на одной странице надо получить ссылку вида: /projects/clients, на другой /projects/pets и т.д.
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
yaleksandr89
@yaleksandr89 Автор вопроса
PHP developer
Решил вопрос создав фильтр:
Фильтр:
add_filter( 'test_term_url', static function ( string $nameTaxonomy, string $termSlug ) {
	$terms = get_terms( [
		'taxonomy'   => $nameTaxonomy,
		'hide_empty' => true,
		'slug'       => $termSlug,
	] );
	$terms = array_shift( $terms );

	return get_term_link( $terms );
}, 10, 2 );

Вызов фильтра:
<?= apply_filters('test_term_url', 'type-work', 'clients' ) ?>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы