jnthnclrk
  • 0
Учитель

Пользовательские типы сообщений WordPress разрывают постоянную ссылку при переустановке темы

  • 0

Это довольно странная проблема. Я создаю пользовательский тип записи WordPress в файле functions.php моей темы, используя следующий формат:

add_action('init', 'product_register');

function product_register() {
$args = array(
    'label' => __('Products'),
    'singular_label' => __('Product'),
    'public' => true,
    'show_ui' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'rewrite' => true,
    'supports' => array('title', 'editor', 'thumbnail')
);

register_post_type( 'product' , $args );
}

Это дает мне следующую структуру URL-адресов для моих продуктов: http://www.mywebsite.com/products/product-name.

Однако, если я переключаюсь на другую тему (TwentyTen), а затем переключаюсь обратно, WordPress забывает постоянную ссылку, теперь, когда я перехожу по указанному выше URL-адресу, я получаю свою страницу 404.

Действительно странная вещь, которую я заметил, заключается в том, что я могу решить эту проблему, перейдя в «Настройки» -> «Постоянные ссылки» в админке. Это временно устраняет проблему до следующего удаления/переустановки темы.

У кого-нибудь еще была похожая проблема?

Share
  1. Это не проблема. То, что вы описали, это нормально. И здоровый.

    • 0
  2. Новая структура постоянной ссылки сохраняется только при WP_Rewrite::flush_rules() вызове. Поскольку это дорогостоящая операция (вычисление новых правил и сохранение их в базе данных), ее не следует делать при каждом init вызове, а только при изменении структуры. Пользовательский тип сообщения, однако, должен быть зарегистрирован при каждом init вызове, так как он сохраняется в массиве PHP в памяти, а не в базе данных (именно поэтому он забыл о пользовательском сообщении при переключении тем: структура постоянной ссылки все еще существовала, но ссылалась на пользовательский тип сообщения, который не был загружен, выдавая ошибку).

    • 0

Оставить ответ

You must login to add an answer.