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

    Пытаюсь решить следующий вопрос. Переношу на wordpress сайт с доисторического движка, и необходимо сохранить старые URL. Выглядят они так: /modules.php?name=Articles&pa=showarticle&articles_id=ТУТИД

    Для этого я создал новый тип записи. Нужные мне URL формируются, но при открытии появляется 404. После сделал копию index.php и переименовал в modules.php, но это к сожалению ничего не дало.

    И только заметил, что в wordpress любой записи, в т.ч. разных типов присваиваются id по порядку? Дело в том, что нужно будет два типа данных News и Articles, и у каждой из них id пересекаются.

    Решаем ли вообще поставленный вопрос, может зря затеял переезд? И если решаем, то в какую сторону думать?

    Спасибо за внимание!

    Части связанные с url’ами выглядят так:

    $args = array(
    ....
    	'rewrite' => array("slug" => "modules.php?name=Articles&pa=showarticle&articles_id="),
    ....
    );
    add_action('init', 'articles_rewrite');
    function articles_rewrite() {
      global $wp_rewrite;
      $queryarg = 'post_type=articles&p=';
      $wp_rewrite->add_rewrite_tag('%cpt_id%', '([^/]+)', $queryarg);
      $wp_rewrite->add_permastruct('articles', '/modules.php?name=Articles&pa=showarticle&articles_id=%cpt_id%', false);
    }
    
    add_filter('post_type_link', 'articles_permalink', 1, 3);
    function articles_permalink($post_link, $id = 0, $leavename) {
      global $wp_rewrite;
      $post = &get_post($id);
      if ( is_wp_error( $post ) )
        return $post;
      $newlink = $wp_rewrite->get_extra_permastruct('articles');
      $newlink = str_replace("%cpt_id%", $post->ID, $newlink);
      $newlink = home_url(user_trailingslashit($newlink));
      return $newlink;
    }

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • я бы не мудрил, а сделал редирект со старых страниц на новые. Первое время было бы сложно, а потом норм)

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Переношу на wordpress сайт с доисторического движка, и необходимо сохранить старые URL. Выглядят они так: /modules.php?name=Articles&pa=showarticle&articles_id=ТУТИД

    Смена URL при смене движка — совершенно нормальная ситуация.

    В общем случае достаточно настроить в .htaccess перенаправления с кодом 301 со старых адресов. Позиции в поисковых системах при этом сохраняются.

    Сохранить старые адреса обычно сложнее, и в этом нет реальной необходимости.

    'rewrite' => array("slug" => "modules.php?name=Articles&pa=showarticle&articles_id="),

    name — одна из зарегистрированных переменных WordPress. Предполагаю, что причина в этом. Можно попробовать убрать её из основного запроса с помощью подобного фрагмента (но не факт, что это поможет):

    function remove_name_from_query_vars( $query_vars ) {
    	unset( $query_vars['name'] );
    	return $query_vars;
    }
    add_filter( 'request', 'remove_name_from_query_vars' );

    Спасибо, за наводку по зарегистрированным переменным, упустил этот момент.

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

    Сделайте перенаправление и будет счастье.

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Свой вид url для нового типа записи» закрыта для новых ответов.