2016-03-25 2 views
0

Я создал пользовательский тип записи и для этого пользовательского почтового типа у меня есть страница аббревиатура, как этот http://example.com/?custom_post=titlehereWordpress add_rewrite_rule: ссылки таможенный пост типа с поддомена

Как я переписать этот адрес (с add_rewrite_rule) в ссылка как

http://titlehere.example.com

до сих пор у меня есть этот код

function custom_rewrite_basic() { 
    add_rewrite_rule('^http://[\w.-]+\.example.com?', 'custom_post=$matches[1]', 'top'); 
} 
add_action('init', 'custom_rewrite_basic'); 

Я неправильно написал регулярное выражение?

ответ

1

Да, если вы посмотрите на This Demo, вы можете видеть, что // подчеркнуто. Это потому, что им не удалось избежать. Их следует выбрать следующим образом: \/\/.

Вот RegEx вы должны использовать:

^http:\/\/[\w.-]+\.example.com? 

Live Demo on RegExr

Кроме того, я не уверен, что если вы хотите, чтобы выбрать ?, так как в настоящее время он делает m в com опционально , но если вы это сделали, вам нужно сбежать от него так, \?. Тем не менее, это будет выбрать http://foo.example.com?something, если вы хотите, чтобы выбрать http://foo.example.com/?something, используйте следующее регулярное выражение:

^http:\/\/[\w.-]+\.example.com\/\? 

Обратите внимание, что при использовании любого RegEx я указанный выше, может еще не работать. $matches[1] выбирает первое совпадение в RegEx, однако у вас нет групп захвата. Я предложил бы использовать следующий код: полный

function custom_rewrite_basic() { 
    add_rewrite_rule('^http:\/\/([\w.-]+)\.example.com\/?', 'custom_post=$matches[1]', 'top'); 
} 
add_action('init', 'custom_rewrite_basic'); 
+0

Спасибо за ответ, но по-прежнему не работает: код add_rewrite_rule ('^ Http:. \/\/[\ Ш .-] + \ example.com ?/g ',' custom_post = $ matches [1] ',' top '); – Crerem

+0

@ user1548981 См. Мое редактирование, вы забыли включить группу захвата, поэтому '$ matches [1]' ** не существует! ** – Druzion

+0

Еще раз спасибо. Все еще не работает, но я не думаю, что на этот раз на этот раз виноват regex. Я вижу здесь http://regexr.com/3d3an, что матч найден. Код - add_rewrite_rule ('^ http: \/\/([\ w .-] +) \. Example.com \ /?', 'Custom_post = $ matches [1]', 'top'); – Crerem

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