Использование - вместо + в постоянной ссылке поиска WordPress

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]+ /(#[^?& ]*)??([^& ]*&)?s=([^& ]+)[^ ]* HTTP/ 
RewriteRule ^$ http://wordpressblog.com/search/%3? [R=301,L] 

В настоящее время я использую указанное выше правило .htaccess mod_rewrite для преобразования постоянной ссылки поиска WordPress по умолчанию:

http://wordpressblog.com/?s=key+word

в красивую постоянную ссылку, например:

http://wordpressblog.com/search/key+word

Мой вопрос: какую часть правила mod_rewrite выше мне нужно изменить, чтобы получить более красивую постоянную ссылку, подобную этой:

http://wordpressblog.com/search/key-word.html

Спасибо.


person poer    schedule 26.05.2010    source источник


Ответы (2)


Это сработало для меня. Поиск не работал, когда у меня были включены постоянные ссылки.

Добавьте этот JQUERY SCRIPT в ваш файл header.php THEME ПОСЛЕ wp_head(); ярлык.

Чтобы это работало, вы также должны включить jquery, добавив <?php wp_enqueue_script('jquery'); ?> в header.php ПЕРЕД wp_head(); ярлык.

Пример:

<?php wp_enqueue_script('jquery'); ?>
<?php
    /* We add some JavaScript to pages with the comment form
     * to support sites with threaded comments (when in use).
     */
    if ( is_singular() && get_option( 'thread_comments' ) )
        wp_enqueue_script( 'comment-reply' );

    /* Always have wp_head() just before the closing </head>
     * tag of your theme, or you will break many plugins, which
     * generally use this hook to add elements to <head> such
     * as styles, scripts, and meta tags.
     */
    wp_head();

?>
<script type="text/javascript"> 
    jQuery(document).ready(function() {
        jQuery("#searchform").live('submit',function(){

            location.href='/search/' + encodeURIComponent(jQuery("#s").val()).replace(/%20/g, '+'); return false;       

        }); 
    }); 
</script> 
person internetstack    schedule 26.02.2011

Если я правильно думаю, когда вы перенаправляете это;

?s=hello+world

к этому;

/search/hello-world.html

WordPress на самом деле будет искать «hello-world.html», по которому я сомневаюсь, что вы получите какие-либо результаты (предполагая, что «hello+world», где плюс — это URL-адрес, декодированный в фактический «пробел», действительно возвращает результаты).

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

Кроме того, кажется заменой символов при перезаписи Apache — вам придется напишите правило для каждого количества вхождений «плюс».

На вашем месте я бы делал все внутри самого WordPress, используя PHP. Я мог бы опубликовать решение, если вам нравится это?

person TheDeadMedic    schedule 27.05.2010