将 post_id 添加到 post_title 仅适用于 post_type 为“post”的帖子

我需要能够在帖子标题中插入帖子的 ID。在标题出现的任何地方都应将 id 添加到标题中。它只应添加到具有帖子类型的帖子中post,而不应添加到页面、自定义帖子类型等中。


我已经设法做到这一点:


function custom1_shortcode_func() {

    global $post;

    ob_start();

    echo get_the_title($post->ID); echo " ("; echo get_the_ID(); echo ")"

    $output = ob_get_clean();

    return $output;

}

add_shortcode('post-id', 'custom1_shortcode_func');

在帖子中使用 [post-id] 时返回帖子标题和帖子 ID。


但是我需要在我的整个网站上修改帖子标题,所以无论什么地方显示帖子标题,它后面都会跟着“(post_id)”。


我试过了,它确实在帖子标题前显示了 post_id,但它改变了所有标题,包括菜单:


add_filter('the_title', 'wpshout_filter_example');

function wpshout_filter_example($title) {

    return get_the_ID().$title;

}


陪伴而非守候
浏览 117回答 1
1回答

潇湘沐

您的第二次尝试已经接近尾声,但您发现这对每个标题都有效。您需要做的是先检查帖子类型是否为 a post,如果是则只添加 id。add_filter('the_title', 'add_id_to_title', 10, 2);function add_id_to_title($title, $post_id) {    //use the id to check the post type and only add the id if it has a type of "post"    if(get_post_type($post_id) == "post")        $title = $post_id.': '.$title;    return $title;}这是做什么的:过滤the_title器可以采用 2 个参数:标题(您正在使用的)以及帖子的 ID。使用 id,可以使用内置get_post_type函数找出帖子类型。然后我们可以检查帖子类型是否是post,如果是我们将 id 添加到标题。
打开App,查看更多内容
随时随地看视频慕课网APP