سؤال

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

هل كانت مفيدة؟

المحلول

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; 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى wordpress.stackexchange
scroll top