How can I load a particular template based on part of a slug ?

Say I have 3 urls that I want to load the same template for so I want to match based on the ‘advice-on’ Please note I don’t want a single page for each creating in the backend. I want to generate the content dynamic.

This is more specific part of the wider question here- Dynamic URL generates dynamic content


domain.com/advice-on-twitter

domain.com/advice-on-facebook

domain.com/advice-on-instagram

1 Answer
1

You can filter template_include, check the request URL for your search words and return a custom template.

Here is a primitive example:

add_filter( 'template_include', function( $template ) {

    $template_map = [
        'advice-on' => 'advice',
        'links-' => 'link-collection',
    ];

    foreach ( $template_map as $find => $match ) 
    {
        if ( 0 === strpos( $_SERVER[ 'REQUEST_URI' ], $find ) )
            return get_template_directory() . "/$match.php"; 
    }

    return $template;
});

Leave a Reply

Your email address will not be published. Required fields are marked *