最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

php - Use object in template part

programmeradmin0浏览0评论

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

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

Share Improve this question edited Feb 7, 2021 at 23:46 Jop asked Feb 7, 2021 at 15:15 JopJop 1279 bronze badges 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 Commented Feb 7, 2021 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 Commented Feb 7, 2021 at 15:49
  • @TomJNowell I updated my question with some code – Jop Commented Feb 7, 2021 at 23:44
Add a comment  | 

1 Answer 1

Reset to default 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; 

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论