我正在尝试在wordpress帖子标题中使用以下短代码。短代码如下所示:
//Use [year] in your posts.
function year_shortcode() {
$year = date('Y');
return $year;
}
add_shortcode('year', 'year_shortcode');
有关如何在帖子标题中执行此短代码的任何建议吗?
感谢您的回复!
答案 0 :(得分:1)
您绝对可以在标题中使用短代码。您只需要使用WordPress挂钩系统在调用标题时运行短代码。因此,如果您想要使用当前年份的短代码[year]
,您将创建短代码:
add_shortcode( 'year', 'sc_year' );
function sc_year(){
return date( 'Y' );
}
然后,挂钩the_title()
的过滤器以运行您的短代码:
add_filter( 'the_title', 'my_shortcode_title' );
function my_shortcode_title( $title ){
return do_shortcode( $title );
}
它会处理帖子/页面标题,但您也希望为您网站上标题标记single_post_title
中使用的wp_head
挂钩运行它。这样,浏览器也会显示正确的标题:
add_filter( 'single_post_title', 'my_shortcode_title' );
注意:您在这里不需要单独的功能,因为它运行完全相同的代码。所以你的总代码看起来像这样:
add_shortcode( 'year', 'sc_year' );
function sc_year(){
return date( 'Y' );
}
add_filter( 'single_post_title', 'my_shortcode_title' );
add_filter( 'the_title', 'my_shortcode_title' );
function my_shortcode_title( $title ){
return do_shortcode( $title );
}
答案 1 :(得分:0)
我认为您不能使用短代码在帖子标题中应用(在管理员帖子编辑屏幕中保存)短代码。 post_title是清理以避免标记或短代码,短标记可能会破坏许多函数使用帖子标题。
要对post_title进行修改,您可以使用过滤器the_title
add_filter('the _title', 'yourfunction');
function yourfunction($title){
global $post;
// if you set a custom field on the post where you want to display the year
if(get_post_meta($post->ID, 'display_year', true) == 1){
$title = $title. ' '. date('Y');
}
return $title;
}
希望有所帮助
答案 2 :(得分:0)
请在'function.php'中添加此代码。试试这个。
<?php
function TitleFunction($title)
{
global $post;
$title = $title. ' ' .get_the_date('Y');
return $title;
}
add_filter( 'the_title', 'TitleFunction', 10, 2 );
?>