В WordPress для реализации локальных страниц для штатов и городов мы можем использовать страницы WordPress (мы также можем использовать собственный маршрут публикации, но иногда клиенты предпочитают страницы корневого уровня для URL-адресов без глубокой вложенности, т.е. site.abc/state вместо site.abc/cpt/state )
- Мы можем добавить штаты в качестве страниц, чтобы отслеживать полное и короткое имя штата, мы использовали его следующим образом: Имя страницы: полное имя штата, например. New York Slug: короткий двухбуквенный код, например. Нью-Йорк
Таким образом, в любой момент времени на странице состояния у нас есть полное имя состояния из заголовка, короткий код состояния из слага страницы и т. д.
- Для городов мы можем сделать их похожими на дочерние страницы для состояния, используя правила адресации и постоянных ссылок WP, например. site.abc/ул/город
Этот URL-адрес дает нам две подсказки, т.е. это дочерняя страница, поэтому это страница города, поэтому мы будем загружать шаблон города для этой страницы, а родительская часть сообщает, к какой странице/состоянию она принадлежит, поэтому мы также можем получить некоторые данные оттуда, например чтобы показать все остальные города в конце из того же штата и т. д.
Для синтаксического анализа URL: (непроверенный код, просто для идей)
function custom_endpoints() {
add_rewrite_rule(
'([^/]{2})/([^/]*)',
'index.php?state=$matches[1]&city=$matches[2]',
'top'
);
add_rewrite_tag( '%state%', '([^&]+)' );
add_rewrite_tag( '%city%', '([^&]+)' );
}
add_action( 'init', 'custom_endpoints' );
Теперь мы можем добавить эти теги перезаписи в запрос как query_vars
function em_query_vars($vars) {
array_push($vars, 'state');
array_push($vars, 'city');
return $vars;
}
add_filter('query_vars','em_query_vars');
Теперь для загрузки шаблона мы можем использовать эти теги запросов: (Непроверенный код, только для идей)
add_filter('template_include', 'custom_function_for_templates', 1, 1);
function custom_function_for_templates($template) {
global $wp_query;
if (isset($wp_query->query_vars['state']) && isset($wp_query->query_vars['city'])) {
$slug = $wp_query->query_vars['city'];
return plugin_dir_path( __FILE__ ). '/templates/city-template.php';
}
if (isset($wp_query->query_vars['state'])) {
return plugin_dir_path( __FILE__ ). '/templates/state-template.php';
}
return $template;
}
Наконец, в шаблоне вы можете использовать текущий тег запроса для города, чтобы заменить везде в контенте, где у вас есть теги %%city%% и %%st%% и %%state%%, чтобы заменить их правильным названием города для отображения страницы с контент, относящийся к текущему городу и штату.
Надеюсь, это даст вам достаточно идей для реализации в соответствии с вашими текущими настройками. Код, который я включил, не тестировался, поэтому он может не работать. Но используемые хуки и фильтры из WordPress Api являются правильными, поэтому вы всегда можете подключить свою собственную логику/функцию к этим шагам, чтобы это произошло.
Редактировать: операции поиска и замены на уровне Php в шаблоне
$content = str_replace("%%city%%", $new_page, $content);
$content = str_replace("%%state%%", get_the_title($state), $content);
$content = str_replace("%%st%%", strtoupper(get_post_field( 'post_name',$state)), $content);
Здесь вы увидите, что я ищу/заменяю любые теги контента, используемые там.
person
Mohsin
schedule
17.04.2017