1

I try to use a template part in my loop.

<?php
foreach ($categories as $category) {
    get_template_part( 'temp-parts/loop/blcnr_loop');
}
?>

In the template part I call the object

<?php 
echo $category->name; 
?>

But this gives me an error "Trying to get property 'name' of non-object". Is there a solution for this?

I tried this

foreach ($categories as $category) {
        $categoryData = array(
            'name' => 'theName'
        );
        get_template_part( 'temp-parts/loop/blcnr_loop',  NULL, $categoryData);
}

And this in the template part

echo $categoryData['name'];`

But this returns NULL

3
  • How are you getting the categories? If you var_dump( $categories ); is it an array of objects or just an array of IDs/slugs/etc. Comment out get_template_part() and also try a var_dump( $category ); and make sure that it's an object. – Tony Djukic Feb 7 at 15:46
  • You can't use variables like that, you need to pass them somehow, there's a parameter in get_template_part for it – Tom J Nowell Feb 7 at 15:49
  • @TomJNowell I updated my question with some code – Jop Feb 7 at 23:44
1

As of WordPress 5.5 you can pass variables to template parts by passing them in an array to the third argument of get_template_part():

foreach ($categories as $category) {
    get_template_part( 'temp-parts/loop/blcnr_loop', null, [ 'category' => $category ] );
}

These variables will populate an $args variable accessible from the the template:

echo $args['category']->name; 
2
  • Hi Jacob I saw this documentation on the Wordpress developement site. As you can see in my question returns the array NULL :-( – Jop Feb 8 at 0:12
  • As my answer and the documentation says, the values are put into a variable $args. You need to use that. – Jacob Peattie Feb 8 at 4:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.