Search code examples
phpwordpresscallbackwordpress-themingcustom-post-type

How to fix call_user_func_array() expects parameter 1 to be a valid callback, function 'my_cpt_single_template' in Wordpress


I am trying to run some jQuery inside a php custom post type template in WordPress using the hierarchy file: single-event.php file (coped fron single.php with jQuery added at top of template):

<script>
jQuery(document).ready(function($) {
    var hexColor = '<?php the_field("event_main_color") ?>';
    $(".event-box-background").css("background-color", hexColor);
    console.log('Working');
});
</script>  

The console does not log so the script isn't running when I load a single event page.

I have this code in my functions.php file:

function my_cpt_event_template($single_template) {
global $post;
if ($post->post_type == 'event') {
$single_template = dirname( __FILE__ ) . '/single-event.php';
}
return $single_template;
}

add_filter( 'single_template', 'my_cpt_single_template' );

And I receive this error when visiting a single custom post type:

Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'my_cpt_single_template' not found or invalid function name in /public_html/wp-includes/class-wp-hook.php on line 310

How can I fix this so WordPress loads single-event.php template file for the CPT UI generated custom post type 'event'?

Much appreciated.


Solution

  • I think this error comes due to your function name being different.

    You need to change the function name in the hook to match the one you defined.

    function my_cpt_single_template( $single_template ) {
        global $post;
        if ( $post->post_type == 'book' ) {
            $single_template = dirname( __FILE__ ) . '/single-event.php';
        }
        return $single_template;
    }
    add_filter( 'single_template', 'my_cpt_single_template' );