如何修改短代码中的页面标题?

时间:2013-03-27 17:18:38

标签: php wordpress shortcode

如何修改短代码中特定页面的页面标题?

以下内容将更改标题,但会针对每个页面执行。我需要更多地控制它的执行位置。

function assignPageTitle(){
  return "Title goes here";
}
add_filter('wp_title', 'assignPageTitle');

有没有办法在短代码函数中调用上面的代码?我知道如何使用do_shortcode(),但上面是一个过滤器。

我的目标是根据网址参数修改网页标题。这仅适用于特定页面。

2 个答案:

答案 0 :(得分:2)

取自WordPress Codex

  

在WordPress 2.5中引入的是Shortcode API,一套简单的   用于创建用于帖子内容的宏代码的函数。

这表明您无法使用短代码控制页面标题,因为短代码在帖子内容中运行,此时标题标记已经呈现,然后为时已晚。

你想要做什么?如果您想要这样做,可以使用Yoast SEO Plugin在每个帖子中设置帖子和页面标题?

您可以根据您的网址参数创建自定义插件,如下所示:

function assignPageTitle(){

if( $_GET['query'] == 'something' ) { return 'something'; }

elseif( $_GET['query'] == 'something-else' ) { return 'something-else'; }

else { return "Default Title"; }

}

add_filter('wp_title', 'assignPageTitle');

答案 1 :(得分:2)

尽管WordPress短代码并非旨在做到这一点,但可以做到这一点。问题是在发送头部分之后处理了短代码,因此解决方案是在发送头部分之前处理短代码。

(*jvm)->DestroyJavaVM(jvm);

关键点是当完成过滤器“ pre_get_document_title”时,将设置全局$ post对象,并且$ post-> post_content可用。因此,您现在可以找到此帖子的简码。

通常调用简码时,它会用空字符串替换自身,因此对post_content没有影响。但是,当从过滤器“ pre_get_document_title”调用时,它可以根据其参数$ atts和全局$ post计算标题。