在帖子标题中使用wordpress短代码

时间:2016-11-05 20:10:13

标签: php wordpress

我正在尝试在wordpress帖子标题中使用以下短代码。短代码如下所示:

//Use [year] in your posts.
function year_shortcode() {
  $year = date('Y');
  return $year;
}
add_shortcode('year', 'year_shortcode');

有关如何在帖子标题中执行此短代码的任何建议吗?

感谢您的回复!

3 个答案:

答案 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 );

   ?>