как чередовать или менять слова в шаблонах Wordpress?

Это пример, которого я пытаюсь достичь.

Допустим, у меня есть штаты США, и в каждом штате есть 5 городов и собственный шаблон с контентом для каждого штата.

Я хочу чередовать/изменять названия городов на каждой странице города без изменения содержимого.

Если я приеду в Калифорнию, то я нажму Сан-Диего, я хочу, чтобы он сказал бла-бла-бла Сандиего, бла-бла-бла, затем, если я нажму на Лос-Анджелес, я хочу, чтобы он сказал бла-бла-бла, Лос-Анджелес, бла-бла-бла.

Я делаю шаблоны в иерархии, которые будут иметь этот контент.

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

содержание может оставаться прежним, просто города должны меняться по одному в каждом штате.

Я создал один шаблон для каждого штата, хотя мне нужно использовать один и тот же шаблон для каждого города.


person Cesar Diaz    schedule 17.04.2017    source источник
comment
Если вы используете его как страницы WP, я однажды сделал аналогичную настройку, где штаты были родительскими страницами, а все города были дочерними страницами этого штата. Шаблон был таким же, но имел логику: если родитель, то показывать содержимое состояния, если дочерний, то показывать содержимое города... и т.д.   -  person Mohsin    schedule 17.04.2017
comment
Ну и наполнение штата будет уникальным не то что города. содержимое города будет другим, но название города должно измениться, чтобы я мог повторно использовать его для каждого города в каждом штате. Я не пытаюсь использовать тот же контент, что и состояние. Если я не ясно выразился в прошлый раз, мои извинения.   -  person Cesar Diaz    schedule 17.04.2017
comment
Для страниц города... я правильно понял, у вас будет тот же контент в шаблоне, но местозаполнитель города будет изменен с фактическим названием? похоже, это можно сделать, имея собственный шаблон города с содержимым с city_name в качестве операции поиска/замены и выполняя постоянную ссылку add_rewrite_rule, чтобы перехватить URL-адрес и загрузить правильный шаблон/город. Таким образом, site.xyz/st/city .. он говорит нам загрузить шаблон города с этим названием города, а также ссылку на родительскую страницу, т.е. состояние...   -  person Mohsin    schedule 17.04.2017
comment
Вау, теперь это имеет смысл. есть ли ссылки или страницы с более глубокими примерами поиска и замены. Мне нравится ваш подход к такого рода проектам. Пожалуйста, отправьте его как ответ на мой вопрос или тему, чтобы я мог отдать вам должное за ваш ответ.   -  person Cesar Diaz    schedule 17.04.2017
comment
Конечно, спасибо, я напишу подробный ответ, теперь я знаю, что вам нужно, а пока вы можете увидеть этот пример сайта, на котором я когда-то это реализовал, frontpointsecurityreviews.com в верхнем правом меню называется: Local, нажмите на него, и вы увидите локальные страницы...   -  person Mohsin    schedule 17.04.2017


Ответы (1)


В WordPress для реализации локальных страниц для штатов и городов мы можем использовать страницы WordPress (мы также можем использовать собственный маршрут публикации, но иногда клиенты предпочитают страницы корневого уровня для URL-адресов без глубокой вложенности, т.е. site.abc/state вместо site.abc/cpt/state )

  1. Мы можем добавить штаты в качестве страниц, чтобы отслеживать полное и короткое имя штата, мы использовали его следующим образом: Имя страницы: полное имя штата, например. New York Slug: короткий двухбуквенный код, например. Нью-Йорк

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

  1. Для городов мы можем сделать их похожими на дочерние страницы для состояния, используя правила адресации и постоянных ссылок 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
comment
Я все еще немного смущен. Я понимаю это в определенной степени, и я дам ему попробовать. Спасибо. - person Cesar Diaz; 17.04.2017
comment
место, где я смущен, это то, что я использую дочернюю тему. Так мне добавить к нему совершенно новый файл JS и связать его? или мне добавить эти функции в родительский файл JS? - person Cesar Diaz; 19.04.2017
comment
@CesarDiaz Это весь php-код, который я предложил, без кода JS. Кажется, вы путаете его с чем-то другим? Или вы задаете другой вопрос, например, как добавить файл JS в дочернюю тему? Я бы предложил запросить в functions.php с помощью хука WP JS enqueue, или просто погуглить его, или задать отдельный вопрос для этого, и вы получите подробный ответ от меня или кого-то, доступного в то время. - person Mohsin; 19.04.2017
comment
Мне нужно больше информации о том, как реализовать пример кода, который вы мне только что показали. Я посылаю вам по электронной почте в вашем вебсайте. - person Cesar Diaz; 19.04.2017