实现这一目标的最佳方法是使用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
, 并返回包含附加生成文本的内容。否则,内容将保持不变。
结论
出于灵活性的原因,在这种情况下,我更喜欢shortcode soluiton。