2014-01-03 2 views
1

Я работаю с темой, где, похоже, ошибка 404 с правилом перезаписи. Правило выглядит следующим образом:wordpress url rewrite rules, производя 404 ошибка

products/([^/]+)/page/?([0-9]{1,})/?$

index.php?portfolio=$matches[1]&paged=$matches[2]

Первая страница выглядит и отображает нормально, но запрос URL для пагинации выглядит не так:

http://www.site.com/products/page/2 

Где я полагаю, , из правила перезаписи это должно выглядеть так:

http://www.site.com/products/foo/page/2 

Так что я решаю за foo. Кажется, что это недостающий уровень/строка для ([^/]+), что я предполагаю, что это своего рода PCRE/preg_match, как указано here, о котором я очень мало знаю. Из того, что я могу сказать, это означает:

начало подшаблоны > определение класса начального символа > Assert начал субъект (или линии, в многострочном режиме) > Нет подсказку> конец символы определения класса > 1 или более квантификатором > конец подшаблон

ОБНОВЛЕНИЕ:

Это связано с темой не моего дизайна. Я использовал Rewrite Rules Inspector, чтобы найти правильное правило перезаписи.

Проблема связана с ссылкой на страницу с коротким знаком галереи. Штрих-код работает на главной странице сайта, но когда он вызывается на другой странице (например, страница/products), а затем вы пытаетесь получить доступ к следующей странице, вы получаете 404. Это работает, когда для постоянных ссылок установлено значение по умолчанию. Вот почему я решил, что проблема связана с правилом перезаписи.

РЕШЕНИЕ:

После рытья через плагин и пересматривают себя на переписывания поведения, я понял, что плагин не создает правила перезаписи для обработки пагинации на странице портфолио. Итак, я сделал один сам и реализовал его с mu-plugin, а затем отправил по электронной почте автору плагина с выпуском.

add_action('init', 'addMyRules'); 

function addMyRules(){ 
    add_rewrite_rule('(.+?)/page/?([0-9]{1,})/?$','index.php?pagename=$matches[1]&paged=$matches[2]','top'); 
} 
+0

Я думаю, вам нужно удалить последнюю косую черту 'products/([^ /] +)/page /? ([0-9] {1,}) /? $' To 'products/([^/] +)/page /? ([0-9] {1,})? $ ' – Shazzad

+0

@Shazzad: У вас есть ссылка на это? – Plummer

+0

Вы попробовали [flush_rewrite_rules()] (http://stackoverflow.com/questions/20525607/rewrited-url-for-page-just-points-to-index/20558327#20558327) ?? часто люди забывают его использовать [codex] (http://codex.wordpress.org/Function_Reference/flush_rewrite_rules) также - это сетевой сайт? –

ответ

1

Вот несколько мыслей:

Я хотел бы использовать this WordPress rewrite analyzer plugin посмотреть, какие правила подкрепляются. Это говорит о его устаревании, однако разработчик плагинов (Jan Fabry) очень талантлив. Он все еще работал несколько месяцев назад, в прошлый раз, когда я его использовал.

WordPress хранит массив правил перезаписи (я забыл, где его найти, возможно, на глобальном $wp_rewrite или что-то в этом роде). Плагин выше помогает вам сопоставлять их.

Как вы создаете свои ссылки на страницы? Возможно, ваша проблема связана с тем, что ваши ссылки на страницы разбиты неправильно, а не на правило перезаписи не работает? Другими словами, если вы используете функцию paginate_links() для создания этих ссылок, они могут не генерировать их в соответствии с вашим правилом перезаписи. Попробуйте ввести свой адрес */foo/*.

Также помните, что вам необходимо обновить правила перезаписи, когда вы вносите изменения в них. Вы можете сделать это, перейдя на страницу «Настройки»> «Постоянная ссылка» в бэкэнде /wp-admin/ (вам может потребоваться отправить форму на этой странице, чтобы сохранить ваши настройки постоянной ссылки, хотя я слышал, что это необязательно).

Насколько я знаю, анализатор перезаписи должен иметь возможность точно согласовывать ваши URL с правилами перезаписи, которые вы создали. Просто выполняйте правила перезаписи при каждом изменении.

RE: Обновление

У вас есть 2 вариант: Сделайте свое правило перезаписи соответствует существующим ссылкам галереи нумерации страниц, или сделать галерею ссылка разбивки соответствует существующим правилам перезаписи.

Чтобы сделать последнее, вам нужно будет найти шорт-код галереи. Сделайте поиск через папку wp-content для функции add_shortcode(, и вы обнаружите, где определяется короткий код галереи. Затем зайдите и измените the paginate_links() function. Он принимает различные аргументы, которые влияют на форматирование ссылок.

+0

Добавлено обновление. Был слишком большой для комментария. :) – Plummer

+0

Вы не дали мне прямой ответ, но на месте это привело меня. Обновленный ответ в исходном сообщении. – Plummer

Смежные вопросы