在快捷码内显示页面和自定义帖子标题

时间:2021-01-26 作者:William Jerome

我正在尝试编写一个短代码来显示页面标题。我只得到了工作的存档标题,但没有自定义帖子类型类别和单个帖子。有人能解释一下怎么做吗?

之所以选择此路径,是因为Elemenentor主题生成器在二级标题中为简单的页面标题和副标题生成了太多代码,而二级标题是围绕图像进行屏蔽的。我使用shortcode小部件插入代码并设置样式。

到目前为止,我写的是:

// Page Title inside shortcode
function page_title_sc( ) {
    $title = (\'Page Title\');

   if ( is_post_type_archive() ) {
    $title = post_type_archive_title( \'\', false ); 
 }
  elseif ( is_page() ) {
    $title = single_post_title();
   } 
   return apply_filters( \'page_title_sc\', $title );
}
 
add_shortcode( \'page_title\', \'page_title_sc\' );

2 个回复
最合适的回答,由SO网友:HK89 整理而成

为帖子标题、页面标题、类别标题、标签标题、taxonmy标题、作者标题添加以下代码。

根据您的需要。

function page_title_sc( ) {

    $title = (\'Page Title\');

    if ( is_page() || is_singular() ) {
        $title = single_post_title();
    } else if ( is_category() ) {
        $title = single_cat_title( \'\', false );
    } else if ( is_tag() ) {
        $title = single_tag_title( \'\', false );
    } else if ( is_author() ) {
        $title = \'<span class="vcard">\' . get_the_author() . \'</span>\';
    } else if ( is_post_type_archive() ) {
        $title = post_type_archive_title( \'\', false );
    } else if ( is_tax() ) {
        $title = single_term_title( \'\', false );
    }

   return apply_filters( \'page_title_sc\', $title );
}
 
add_shortcode( \'page_title\', \'page_title_sc\' );

SO网友:cjbj

我不完全确定你想做什么,但是is_page 将检查页面并排除(自定义)帖子。如果你想为职位创造条件,你需要is_single. 如果您希望该条件同时适用于帖子和页面,则需要is_singular.

也就是说,走这条路可能不是最明智的做法,因为你会污染你的帖子内容。为标题编写一个过滤器,取消Elementor对其所做的您不喜欢的操作,这将更符合逻辑。如果您编写了一个具有高优先级的过滤器,那么您可以实现与现在使用短代码所做的相同的操作,而无需修改您的帖子内容。