如何替换或更改 Wordpress 模板上的单词?

how to alternate or change words on Wordpress templates?

这是我要实现的示例。

假设我有美国各州,每个州有 5 个城市和一个包含每个州内容的自定义模板。

我想alternate/change每个城市页面上的城市名称而不改变内容。

如果我访问加利福尼亚,然后我单击圣地亚哥,我希望它说等等等等等等等等。

我正在制作包含此内容的层次结构模板。

我试图通过创建一个模板并在文本周围交替显示城市名称来节省时间。

内容可以保持不变,只是城市必须每个州改变一个。

我为每个州创建了一个模板,但我需要为每个城市使用相同的模板。

在 WordPress 中,我们可以使用 WordPress 页面来实现州和城市的本地页面(我们也可以自定义 post 路由,但有时客户更喜欢 url 的根级页面,而无需深度嵌套,即站点.abc/state 而不是站点。abc/cpt/state)

  1. 我们可以将状态添加为页面,以获得状态全名和 short-name 跟踪,我们像这样使用它: 页面名称:状态全名例如纽约 Slug : short-two 字母代码 例如纽约

因此,在状态页面上的任何给定时间,我们都会从标题中获得状态全名,从页面 slug 等中获得状态 short-code。

  1. 对于城市,我们可以使用寻址和 WP 永久链接规则使它们看起来像 child 状态页面,例如网站.abc/st/city

这个 url 给了我们两个线索,即它是 child 页面所以它是城市页面,所以我们将为这个页面加载城市模板, parent 部分告诉我们page/state 它属于哪个,所以我们也可以从那里获取一些数据,比如最后显示来自同一州的所有其他城市等等。

对于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 的挂钩和过滤器是正确的,因此您始终可以将自己的 logic/function 挂接到这些步骤以实现它。

编辑:在模板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);

在这里你会看到我是search/replacing内容的任何标签