下面是场景。。。
对于本地站点,我有不同的城市特定页面。这些页面的第一段将是唯一的,并与特定城市相关。但之后的内容将是相同的,除了城市名称。。。
因此,我要做的是创建一个内容片段,其中包含每个城市相同的内容,但我还需要能够向该内容片段传递一个值(城市名称)。
例如,如果我的内容片段包含以下文本:“CITYNAME是一个美丽的城市”,则应将CITYNAME替换为我传递给内容片段的值,例如Dallas。
使用wordpress实现这一目标的不同方式有哪些?插件或自定义代码。
下面是场景。。。
对于本地站点,我有不同的城市特定页面。这些页面的第一段将是唯一的,并与特定城市相关。但之后的内容将是相同的,除了城市名称。。。
因此,我要做的是创建一个内容片段,其中包含每个城市相同的内容,但我还需要能够向该内容片段传递一个值(城市名称)。
例如,如果我的内容片段包含以下文本:“CITYNAME是一个美丽的城市”,则应将CITYNAME替换为我传递给内容片段的值,例如Dallas。
使用wordpress实现这一目标的不同方式有哪些?插件或自定义代码。
实现这一目标的最佳方法是使用shortcode 或afilter.
我倾向于在这个场景中使用短代码,因为您可以灵活地在自动生成的内容后面添加另一个段落,这作为一个过滤器更加复杂。此外,我不知道您的城市是否是自定义的帖子类型,或者WordPress是否有其他方法可以知道这是一个城市而不是其他内容(使用meta_value
, page_template
, ...).
__()
使内容可翻译,就像对待每个硬编码字符串一样。function f711_generate_city_texts( $cityname ) { // function receives cityname as variable
return $cityname . __( \'is a beautiful city\', \'f711_wpse\' ); //returns the custom content with the cityname built in.
}
现在,我们需要通过将此函数添加到内容。add_shortcode( \'f711_citytext\', \'f711_citytext_shortcode\' );
function f711_citytext_shortcode( $atts ) {
extract( shortcode_atts( array(
\'city\' => get_the_title(), // define city as a attribute for the shortcode, with the title as standard value
), $atts ) );
return f711_generate_city_texts( $city );
}
在您的内容中,您现在可以使用[f711_citytext city="yourcityname"]
或者你可以离开city
-属性,如果在循环中,则为get_the_title()
用作函数中的标准值。我将使用meta_value
包含bool
具有f711_iscity
设置为true
.
add_filter( \'the_content\', \'f711_citytext_filter\', 10, 1 );
function f711_citytext_filter ( $content ) {
if ( get_post_meta( get_the_ID(), \'f711_iscity\', true ) === true )
return $content . f711_generate_city_texts( get_the_title() );
return $content;
}
此函数检查是否设置f711_iscity
到true
, 并返回包含附加生成文本的内容。否则,内容将保持不变。