Поддержка Проблемы и решения Не получается изменить ссылку страницы

  • Приветствую! Уже долгое время пытаюсь решить проблемы — не знаю как поменять внешний вид ссылки с «http://amor-photo.com/?page_id=824» на что-то вроде «http://amor-photo.com/about.html»
    Пермалинкс меняют ссылки на посты.. а мне нужно изменить ссылку всего пары страниц на сайте.. чтобы они выглядели более юзер-френдли. ссылки постов меня устраивают как есть..
    Помогите плиз, как поправить?

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    «Красивые» постоянные ссылки включаются для всех типов данных сразу — записей, страниц, рубрик, меток. Старые адреса вида ?page_id=824 будут перенаправляться на новые.

    спасибо за ответ! а нельзя ли изменить только несколько ссылок на «красивые» а чтобы все остальные оставались такими как есть ?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Хотел ответить, что простого решения нет, но вдохновился и придумал 🙂

    Можно добавить фрагмент в functions.php активной темы:

    $custom_page_links = array(
    	'824' => 'about.html',
    );
    
    function change_page_links($link, $id) {
    	global $custom_page_links;
    
    	if ( in_array( $id, array_keys($custom_page_links) ) )
    		$link = home_url( $custom_page_links[$id] );
    
    	return $link;
    }
    add_filter('page_link', 'change_page_links', 10, 2);
    
    function change_query_vars($query_vars) {
    	global $custom_page_links;
    
    	$custom_page_ids = array_flip($custom_page_links);
    
    	if ( !empty($_REQUEST['page_id']) ) {
    		$page_id = $_REQUEST['page_id'];
    		if ( in_array($page_id, $custom_page_ids) ) {
    			wp_redirect( home_url( $custom_page_links[$page_id] ), 301 );
    			exit();
    		}
    	}
    
    	$request_uri = $_SERVER['REQUEST_URI'];
    	$home_path = parse_url( home_url() );
    	if ( isset($home_path['path']) )
    		$request_uri = preg_replace("|^{$home_path['path']}|", '', $request_uri);
    	$request_uri = trim($request_uri, '/');
    
    	if ( in_array($request_uri, array_keys($custom_page_ids) ) )
    		$query_vars['page_id'] = $custom_page_ids[$request_uri];
    
    	return $query_vars;
    }
    add_filter('request', 'change_query_vars');

    Спасибо большое за помошь, но почему-то не сработало.. а я уже было так обрадовался.. выводит кучу каких-то ошибок в шапке, вот скриншот:
    http://amor-photo.com/upload/func.jpg
    я вставил этот фрагмент в самый низ файла functions.php активной темы.

    Модератор Yuri

    (@yube)

    я вставил этот фрагмент в самый низ файла functions.php активной темы.

    Надо не в самый, а перед «закрывалкой» ?>

    ок, получилось! ссылка поменялась на текстовую, только при нажатии не открывает нужную страницу — пишет что такая страница «about.html» не найдена! что делать ?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Создайте в корневом каталоге файл .htaccess с правилами WordPress:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress

    wow! все работает.. респект вам, Сергей!
    спасибо большое за помощь, надеюсь подводных камней от этого никаких не возникнет? ) например с поисковиками и т.п. ?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Можно добавить перенаправление со старых адресов с кодом 301, чтобы исключить дубли. Обновил первый фрагмент.

    благодарю!

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Тема «Не получается изменить ссылку страницы» закрыта для новых ответов.