使用多个自定义域作为自定义帖子标题

时间:2021-09-21 作者:TonioLip

我偶然发现了一段非常棒的代码,它正好符合我在这条线索上的需要:Using custom field as custom post title 通过@chrisguitarguy 我希望有一种方法可以调整它,使用几个自定义字段的输入来填充CPT的标题。

例如,为了确保不会出现两次生成相同标题的情况,我想使用一个名为dlc_media_photos_titre 后跟另一个名为dlc_media_photos_date, 这样,我应该以以下格式获得标题:Photo gallery name 20210921.

日期格式并不重要,只是为了在标题中包含它。

提前谢谢(如果我的帖子不正常,请原谅,这是我在StackExchange/Overflow上的第一篇帖子)。

edit 是的,下次我会添加我正在使用的代码,这很明显!非常感谢你的帮助

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

理想情况下,您应该在问题中包含您已经尝试过的代码,以便我们可以提供帮助,只是一个提示。:)但是,如果您按原样使用另一篇文章中的代码,则更改如下:

add_filter( \'the_title\', \'wpse33385_filter_title\', 10, 2 );
function wpse33385_filter_title( $title, $post_id )
{
    if( $new_title = get_post_meta( $post_id, \'custom_field_name\', true ) )
    {
        return $new_title;
    }
    return $title;
}
如果原始字段仅引用一个自定义字段,则需要获取两个,然后同时使用这两个字段:

add_filter( \'the_title\', \'wpse33385_filter_title\', 10, 2 );
function wpse33385_filter_title( $title, $post_id )
{
    $photos_title = get_post_meta( $post_id, \'dlc_media_photos_titre\', true );
    $photos_date = get_post_meta( $post_id, \'dlc_media_photos_date\', true );

    if( $photos_title && $photos_date) {
        $new_title = $photos_title . \' \' . $photos_date;
        return $new_title;
    }
    return $title;
}
请注意,该行$new_title = $photos_title . \' \' . $photos_date; 正在两个字段的输出之间添加空格。如果您想要其他东西,例如|(管道符号),可以执行以下操作:

$new_title = $photos_title . \' | \' . $photos_date;