admin管理员组

文章数量:1122832

I have the following code:

function auto_link_post_titles( $content, $post_id, $field ) {
    $excluded_ids = array(); // Put the IDs of the pages you want to exclude here
    $excluded_field_names = array(); // Put the names of the fields you want to exclude here
    
    if ( isset( $_GET['ntb'] ) || did_action( 'ninja_tables_loaded' ) ) {
    return $content;
}
    
    if(!in_array($post_id, $excluded_ids) && !in_array($field['name'], $excluded_field_names)) {
        // Sets the post type(s) we'll retrieve.
        $desired_post_types = array( 'my_post_type', 'my_other_post_type' );
        // This is to get all published posts from all post types.
        $args = array(
            'post_type'      => $desired_post_types,
            'post_status'    => 'publish',
            'posts_per_page' => -1, // this is to retrieve all posts
        );

        $posts = get_posts( $args );

        // Here are looping through each post and replace the title in the content with a link.
        foreach ( $posts as $post ) {
            $post_title = esc_html( $post->post_title ); // Here we are getting the post title.
            $post_link  = esc_url( get_permalink( $post->ID ) ); // Here we are getting the post link.

            // Create a link element
            $link = '<a href="' . $post_link . '" target="_blank">' . $post_title . '</a>';

            // Here we are replacing the plain text title with the link.
            $content = str_replace( $post_title, $link, $content );
        }   
    }

    return $content;
}

// We have apply the function to the content of posts.
// Note the number of parameters is set to 3 here
add_filter( 'acf/load_value', 'auto_link_post_titles', 10, 3 );

The code automatically detects the post titles, based on the entered data. My problem is that there is no logic to it. I have three posts. Their names are: 1.CATA 2. CATA(1) 3. CATA(2)

The code does not take into account the full title, only the first couple of letters - and as soon as it's ready, begin the automatic linking.

So since I have a post named "CATA", in all three cases only the post named "CATA" is linked, incorrectly for CATA(2) and CATA(3).

So my question: Is there any way to extend the code or modify it to detected the full title? And if yes, how?

本文标签: phpEnable logical for function