Изменение слага зарегистрированного пользовательского типа записи в дочерней теме
Я успешно переименовал пользовательский тип записи, зарегистрированный моей родительской темой, в мою дочернюю тему, используя этот метод . Проблема в том, что мои постоянные ссылки не изменились. Поэтому, когда я меняю portfolio
на homepage
и использую структуру постоянных ссылок /%category%/%postname%/
, мои URL-адреса по-прежнему выглядят так mysite.com /портфолио/страница/ вместо mysite.com /домашняя страница/страница/.
Это код, который я использую для изменения своего CPT:
add_action( 'wp_loaded', 'wpse_19240_change_home_labels', 20 );
function wpse_19240_change_home_labels()
{
global $wp_post_types;
$b = 'portfolio';
if ( empty ( $wp_post_types[ $b ] )
or ! is_object( $wp_post_types[ $b ] )
or empty ( $wp_post_types[ $b ]->labels )
)
return;
$wp_post_types[ $b ]->labels->name = 'Sliders';
$wp_post_types[ $b ]->labels->singular_name = 'Slider';
$wp_post_types[ $b ]->labels->add_new_item = 'Add New Slider';
$wp_post_types[ $b ]->labels->edit_item = 'Edit Slider';
$wp_post_types[ $b ]->labels->new_item = 'New Slider';
$wp_post_types[ $b ]->labels->view_item = 'View Slider';
$wp_post_types[ $b ]->labels->search_items = 'Search Sliders';
$wp_post_types[ $b ]->labels->not_found = 'No sliders found.';
$wp_post_types[ $b ]->labels->not_found_in_trash = 'No sliders found in Trash.';
$wp_post_types[ $b ]->labels->menu_name = 'Homepage Sliders';
$wp_post_types[ $b ]->labels->all_items = 'All Sliders';
$wp_post_types[ $b ]->labels->add_new = 'Add New Slider';
$wp_post_types[ $b ]->labels->name_admin_bar = 'Slider';
}
Я успешно изменил слизняка, использование:
function change_slug_of_post_type_portfolio() {
register_post_type('portfolio', array('rewrite' => array ('slug' => 'homepage',)));
}
add_action('init', 'change_slug_of_post_type_portfolio', 20);
Но теперь я получаю ошибку 404 при переходе на страницу, созданную системой: mysite.com/homepage/page /
Я позаботился о том, чтобы сделать single-homepage.php и я попытался добавить flush_rewrite_rules();
, как рекомендовано в этом посте, но безрезультатно.
1 answers
С помощью вашего кода вы полностью переопределяете свой CPT вместо того, чтобы просто изменять слизняк , возможно, это изменит публичный доступ
Попробуйте это:
$args = get_post_type_object("portfolio");
$args->rewrite["slug"] = "homepage";
register_post_type($args->name, $args);