过滤标题也更改了页面标题

时间:2018-03-12 作者:Joppieb

我创建了一个带有不同输入字段的自定义帖子类型。例如,名字和姓氏。

所以我想把这些输入作为post列列表中的标题。为此,我使用了过滤器选项:

add_filter( \'the_title\', function( $title ) { 
    $title_firstname = esc_html( get_post_meta( get_the_ID(), \'first_name\', true ) ); 
    $last_name = esc_html( get_post_meta( get_the_ID(), \'last_name\', true ) );

    $title = $first_name . \' \' . $last_name;
    return  $title; 
} );
好吧,这对我来说很有用,但有一个问题:

默认帖子和页面的所有标题都消失了。

我怎样才能只更改我的自定义帖子标题?

希望有人能帮我:)

善意的回报,

Jop公司

1 个回复
SO网友:Nathan Johnson

当您使用get_post_meta() 并且该帖子(或页面或自定义帖子类型)的post meta不存在,那么该函数将返回空数组或空字符串,具体取决于第三个参数是false(默认值)还是true。由于您将true作为该参数传递,因此可以检查名字或姓氏是否等于空字符串。如果是,则可以返回$title 保持不变。

您还可以使用添加支票is_singular() 如果您只想在某些帖子类型上应用过滤器。

add_filter( \'the_title\', function( $title, $id ) { 
    //* Only use this filter on `your-custom-slut` post types
    if( ! is_singular( \'your-custom-slug\' ) ) {
      return $title;
    }
    $fn = esc_html( get_post_meta( $id, \'first_name\', true ) ); 
    $ln = esc_html( get_post_meta( $id, \'last_name\', true ) );
    //* Use default if either the `first_name` or `last_name` isn\'t defined
    return ( \'\' === $fn || \'\' === $ln ) ? $title : $fn . \' \' . $ln;
}, 10, 2 );

结束

相关推荐

变量中带有撇号的GET_PAGE_BY_TITLE

我在创建查询某些帖子的快捷码时遇到了一些问题。这是我的代码的基础:function shortcode_equipment($atts, $content = null) { $equipment = get_page_by_title($content, OBJECT, \'equipment\'); $loop = new WP_Query( array( \'posts_per_page\' => 1, \'po