Почему мои пользовательские поиски типа сообщения прекратили работать после изменяющихся URL / обновление WordPress?

ВАЖНОЕ ОБНОВЛЕНИЕ: я понял, что мои проблемы могли также быть связаны с обновлением WordPress 3.3.


Только что я отправил решение своего собственного вопроса о поиске Пользовательских Типов Сообщения.

В то время я использовал URL http://www.seriouslyfish.com/dev/ пока я перестроил веб-сайт.

Теперь я "пошел живой" и переместил все в http://www.seriouslyfish.com.

По некоторым причинам это, кажется, повредило мои Пользовательские поиски Типа Сообщения. При попытке искать от полей "PROFILESEARCH" или "QUESTIONSEARCH", то Вы будете видеть, что это перенаправляет к /search/ вместо /questions/search или /species/search.

Я имею, переписывают установленный анализатор, но я не думаю, что это - проблема, поскольку этот URL, кажется, работает правильно: http://www.seriouslyfish.com/species/search/betta.

Какая-либо идея, что могло вызывать это? Я не на 100% уверен, что проблема связана с изменением URL, поскольку ни один из кода не должен был изменяться.


.htaccess

RewriteEngine On
RewriteCond %{QUERY_STRING} genus=([a-zA-Z0-9-]+)&species=([a-zA-Z0-9-]+)
RewriteRule ^profile.php$ /species/%1-%2? [L,R=301]

RewriteCond %{QUERY_STRING} id=([0-9]*)
RewriteRule ^profile.php$ calc.php?id=%1 [L,R=301]

RewriteRule ^kb.php$ /knowledge-base/ [L,R=301]

# 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

wp-config.php (или, несколько строк в нем - ничто иное касающееся URL не существует в файле),

define('WP_SITEURL', 'http://www.seriouslyfish.com');
define('WP_HOME', 'http://www.seriouslyfish.com');

действия формы

PROFILESEARCH

<h1 class="profilesearch">PROFILE<span class="white">SEARCH</span></h1>
<form id="profilesearch" action="<?php echo home_url( '/species/' ); ?>" method="get">
    <input type="text" size="50" class="default-value" value="SEARCH" name="s" />
    <input type="submit" value="GO" class="profilesearch_submit" />
    <label style="width: 180px;">SEARCH FISH SPECIES PROFILES</label>
</form>

QUESTIONSSEARCH

<h1 class="profilesearch">QUESTION<span class="white">SEARCH</span></h1>
<form id="profilesearch" action="<?php echo qa_get_url('archive'); ?>" method="post">
    <input type="hidden" name="type" value="profile" />

    <input type="text" size="50" class="default-value" value="<?php the_search_query(); ?>" name="s" />
    <input type="submit" value="GO" class="profilesearch_submit" />
</form>

GLOSSARYSEARCH

<div class="glossary" href="#">
    GLOSSARY &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong class="dkblue">&#9660;</strong>
    <span>
        <form action="<?php echo home_url( '/glossary/' ); ?>" method="get">
            <p style="font-size:12px;">SEARCH<strong class="dkblue">GLOSSARY</strong></p>
            <input type="text" name="s" value="" />
            <input type="submit" value="GO" class="glossary_submit" />
        </form>
        <div class="glossaryletters">
            <a href="/glossary/a/">A</a>
...
            <a href="/glossary/z/">Z</a>
            <div class="clear"></div>
        </div>
    </span>
</div>

функция custom_rewrite

/* --- rewrite rules for searches...*/
function custom_rewrite( $wp_rewrite ) {
    $species = array(
        '(species|glossary)/search/(.+?)(/page/([0-9]+))?/?$'      =>  'index.php?post_type='.$wp_rewrite->preg_index(1).'&s='.$wp_rewrite->preg_index(2).'&paged='.$wp_rewrite->preg_index(4)
    );  

    $wp_rewrite->rules = $species + $wp_rewrite->rules;
}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_filter( 'generate_rewrite_rules', 'custom_rewrite' );

Заранее спасибо,

5
13.04.2017, 15:37
4 ответа

Возможно, что после перемещения сайта Вы не обновили понимание WordPress того, где сайт расположен. Вы могли бы хотеть попытаться добавить следующее к Вашему wp-config.php файл:

define('WP_SITEURL', 'http://www.seriouslyfish.com');
define('WP_HOME', 'http://www.seriouslyfish.com');

Это переопределит настройки в базе данных. Использование WordPress настройки местоположения к прямому переписывают трафик, таким образом, это могло бы решить проблему. Я предполагаю это, потому что Вы говорите, что вещи работали правильно перед перемещением сайта.

Возможно, имело бы смысл пытаться перепроверить Ваш .htaccess файл также? Возможно, что-то там перенаправляет неправильно?

Это могла бы быть хорошая идея также для проверки action URL на форме. Это сгенерировало плагин, надлежащий WordPress, или чем-то еще? Если это находится под Вашим контролем и может быть переписано так или иначе, возможно, Вам не нужно ручное перенаправление, используемое в ответе, с которым Вы связываетесь во главе Вашего вопроса?

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

1
19.02.2020, 22:09
  • 1
    Привет Gavin. Спасибо за это - я включал все соответствующие нормы кроме того, что обсуждено в ответе на мое исходное сообщение (связанный в первом абзаце). Когда я переместил сайт, я удостоверился, что не было никакого упоминания о /dev или в базе данных или в любых файлах используется в установке WP. По сути, и поскольку я упомянул, я не убежден, что проблема связана с изменением URL. Я просто не могу разработать то, чем еще это могло быть.. –  dunc 11.06.2012, 00:27

Проверьте, что Ваше сообщение вводит коды создания, иногда люди используют старый код, и WordPress изменил потерянный с тех пор. Независимо от того, что Вы используете для поиска, Ваши типы сообщений должны позволить следующее:

'exclude_from_search'=> false
'publicly_queryable'=> true
'has_archive'=> true 

Abou поиск, я нахожу этот подход интересным: http://dbaines.com/blog/archive/wordpress-custom-post-type-multiple-search/

0
19.02.2020, 22:09
  • 1
    Спасибо Diana. Согласно ссылке на исходное сообщение, все те атрибуты установлены правильно. –  dunc 14.06.2012, 17:21
  • 2
    я попробовал Ваш поиск профиля и это работало: <form id="profilesearch_form" action="<?php echo home_url( '/' ); ?>" method="get"> <input type="hidden" name="hotel"/> <input type="text" size="50" class="profilesearch_input" name="hotel" /> <input type="submit" value="GO" class="profilesearch_submit" /> </form> Где hotel тип сообщения. Довольно странный, потому что получающаяся ссылка идет: ?hotel=&hotel=the-input-value что-либо, чтобы сделать с ?s=. –  Diana 14.06.2012, 19:26
  • 3
    Привет Diana. Я не уверен, что Вы пытаетесь объяснить путем вставки меня тот код. Чем Вы подозреваете, что проблема? –  dunc 14.06.2012, 23:49
  • 4
    я подозреваю Вас, не нужно никакое специальное действие в .htaccess больше (Ваш предыдущий вопрос, которые приводят к этому), WordPress теперь может переписать ссылки для типов сообщений и taxonomies, и можно создать структуру при помощи фильтров. .htaccess файл является очень решительным. Необходимо попытаться сохранить .htaccess, как WordPress рекомендует. –  Diana 15.06.2012, 05:40
  • 5
    , которым я верю .htaccess файл WordPress по умолчанию с некоторыми 403 постоянных перенаправления от моей старой структуры URL? –  dunc 15.06.2012, 13:43

Вы сделали, пытаются добавить EP_PERMALINK как ep_mask (маска конечной точки) на Вашем пользовательском аргументе типа сообщения? Этот параметр мог бы быть полезным.

'permalink_epmask' => EP_PERMALINK

Я был опытом это однажды и твердость, просто повторно сбросив постоянную ссылку.

Удачи.

1
19.02.2020, 22:09

Вы попытались сбросить постоянные ссылки путем пересохранения их, у меня была эта проблема, и она работала на меня.

Посмотрите на Вас также определение поиска, так взгляд на то, что точно Вы ищете попытку, добавляющую эту функцию;

function mySearchFilter($query) {
    $post_type = $_GET['type'];
    if (!$post_type) {
        $post_type = 'any';
    }
    if ($query->is_search) {
        $query->set('post_type', $post_type);
    };
    return $query;
};

add_filter('pre_get_posts','mySearchFilter');
-1
19.02.2020, 22:09
  • 1
    Да, испытанное сбрасывание ссылок. Исследует Ваш код позже, хотя он не объясняет, почему мои поиски случайным образом повредились - они работали, как предназначено. –  dunc 15.06.2012, 13:46
  • 2
    , Добавляющему, что post_type любому возвратит attachements, который я предполагаю, не то, что они хотят. –  Cristian 25.07.2012, 08:09

Теги

Похожие вопросы