Ответы в темах

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Вобщем у меня получилось вот таким способом:

    function func_404_redirect($query){
    	global $wp_query;
    	$post = get_post(2);
    	$wp_query->queried_object = $post;
    	$wp_query->is_single = true;
    	$wp_query->is_404 = false;
    	$wp_query->queried_object_id = $post->ID;
    	$wp_query->post_count = 1;
    	$wp_query->current_post=-1;
    	$wp_query->posts = array($post);
    
    }
    add_filter('template_redirect','func_404_redirect');

    Но на stackoverflow человек посоветовал делать через 404.php в самом шаблоне.
    Какой из этих способов лучше пока незнаю

    Код простой:

    function func_404_redirect($query){
    	//global $wp_query;
    	//$old_url = $wp_query->query['pagename'];
    	$post = get_post(2);
    	//print get_permalink(2);
    
    	//print_r($post);
    	//print_r($query);
    	$query->query_vars['name'] = get_permalink($post);//$post->post_name;
    	//print get_permalink($post);
    	//print_r($query);
    	//die();
    	return $query;
    	//die();
    	/*$content = $post->post_content;
    	$content = apply_filters('the_content', $content);
    	$content = str_replace(']]>', ']]>', $content);
    	echo $content;*/
    }
    add_action('parse_request','func_404_redirect');

    Если используется действие parse_request, то достаточно указать ярлык нужной записи в поле name массива query_vars.

    какой именно «Ярлык» ? post_name? post_id? guid? permalink?

    Перепробовал все выше стоящие варианты — не пошло. выводит 404 ошибку

    Эээээ…. Короче, читать тут http://codex.wordpress.org/Plugin_API

    ЭЭЭЭэ дык это то я найду. меня интересует как именно сделать реврайт если add_rewrite_ — не работает (см. пример выше). а php функция header(..) может делать только 301 редирект который в моих условиях неприемлем

    А можно пример хука. т.к. я пока что вижу только выход через ф-цию php header(….) но это тот же самый редирект

    А разница лишь в том, что нагрузка ляжет не на ВП, а на апач. И второй момент — это увидит любой вебмастер, подобравший сайт после Вас и не будет ломать голову откуда такие непонятки.

    Наверное я прислушаюсь к этому совету. Но всетаки для себя хочу знать почему

    function add_rewrite_rules(){
        add_rewrite_rule('^1300/1308.html/$','index.php/?p=20','top');
    }
    
    add_action( 'init','add_rewrite_rules' );

    вот такой вот код не срабатывает ? а именно если я захожу на страницу 1300/1308.html то мена 301-м редиректом перебрасывает на эту ще страницу но со слешем в конце. А дальше — на главную страницу?

    Требование вполне справедливое. Решается в хтацессе.

    Для одного УРЛа — согласен Но для 3тыс урлов ?
    Причем которые не подпаают под шаблон!! Наведу пример

    /006589
    /00751d
    /007740
    /0077b8
    /0092e5
    /0147a4
    /017bc1
    /019445
    /01ad33
    /01e00e
    /01f8ba
    /01fd24
    .......................
    /zvezdocheti_stekautsa_v_brekon
    /zolotye-peski
    /zolotoi_novi_god_v_birme
    /zolotoi_ipad_v_dubae
    /zizn_pi_vdohnovlaet_turistov
    /zimnii_izrail
    /zimnie_prazdniki_pribligautsa

    все эти УРЛы хранятся в БД.

    Не надо искать проблем, там где их нет. Скажите какие правила ЧПУ (УРЛы) были, и какие стали на др. домене.
    А лучше гуглите как перенести сайт на новый домен и прописать 301

    Дык я и сам в курсе что так лучше. но Требоание клиента чтобы 301 небыло.
    Уговаривал всякими способами но ни в какую. Знаю, что скажете, надо было клиента послать и не браться за работы но уже 90% работы сделано. остался вот этот редирект.

    те 3к страниц в функии — это нормально? 🙂
    Если что — правила реврайта одинаковы и для хтацесса и для add_rewrite_rule

    Ну какбы я не собираюсь запихивать все реврайты в одну функцию. просто в старой базе все УРЛы хранились в БД вот их я оттуда буду черпать и соответственно подставляться (или не подставлять add_rewrite…)

    А по-нормальному: в хтацессе 301

    ~ 3000 страниц в .htaccess ??

    (+в базе поменять при необходимости) — не?

    да но в базе есть вот такие url-ы — «/1300/1308.html» как мне его захватить ?

Просмотр 9 ответов — с 1 по 9 (всего 9)