Использование - вместо + в WordPress Search Постоянная ссылка - PullRequest
1 голос
/ 26 мая 2010
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

Спасибо.

Ответы [ 2 ]

1 голос
/ 26 февраля 2011

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

Добавьте этот JQUERY SCRIPT в файл THEME header.php ПОСЛЕ 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> 
0 голосов
/ 27 мая 2010

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

?s=hello+world

к этому;

/search/hello-world.html

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

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

Плюс, кажется, боль в замене символов в Apache: - вам нужно написать правило для каждого числа «плюс».

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

...