Как в WP разрешить чтение постов с другим статусом?
Плагин не плагин, а регистрируется post_status в конечном итоге с помощью функции register_post_status. Как и многие другие функции WP, она принимает ряд аргументов, в том числе такие:public
(bool) (optional) Whether posts of this status should be shown in the front end of the site.
Default: falseinternal
(bool) (optional) Whether the status is for internal use only.
Default: falseprivate
(bool) (optional) Whether the posts of this status should be accessible by their urls.
Default: false
Эти аргументы определяют, будет ли доступен данный статус на фронтенде и будут ли генерироваться ЧПУ. Скорее всего плагин конфигурирует их как приватные, поэтому они недоступны. Есть 3 варианта (возможных):
1. В самом плагине есть возможность перенастроить эти свойства под себя.
2. Плагин предоставляет фильтр, с помощью которого можно изменить эти аргументы.
3. Менять эти аргументы напрямую в определении статусов, через глобальный доступ (фильтрами тут WordPress, увы, не радует): function make_archived_status_public()
{
	global $wp_post_statuses;

	// Меняем public на true
	$wp_post_statuses['archived']->public = true;

	// Повторяем для других аргументов, если нужно
	// ...
}
add_action( 'init', 'make_archived_status_public' );
Вопрос со ссылками решился подставлением в href echo str_replace("%object%", $post->post_name, get_post_permalink($post->ID, true));