如何使变量在偏导数中可用?

时间:2016-09-01 作者:dave dave

我有一个部分叫做single.php 看起来是这样的:

<?php   $userdata = get_userdata($post->post_author) ;  ?>  
<div class="entry-meta"> 
    <span class="byline author vcard"><?= __(\'By\', \'sage\'); ?>
    <a href="<?= get_author_posts_url(get_the_author_meta(\'ID\')); ?>" rel="author" class="fn">
        <?php  echo ucfirst($userdata->user_nicename)  ?>
    </a>
    </span>    
</div>
现在,$userdata 可能在我的单曲中的其他地方有用。因此,我希望变量及其值在所有模板中全局可用,无论何时使用我的单个模板。

所以我删去了第一行:创建$userdata 并更早地将其放入循环中更早调用的“父”模板中。

唉,该变量不再适用于部分用户。我尝试了一些其他模板,这些模板在循环的前面也被调用过。我得到了相同的结果:变量不可用。

我想在functions.php. 但我可以想出几个不这样做的理由。首先,为什么要为get_userdata() 什么时候get_userdata 是否已存在?这似乎不雅。

2 个回复
SO网友:cjbj

WordPress缓存用户信息。打电话真的没问题get_userdata 每次你需要的时候。您唯一要做的就是将其转换为变量$userdata 是让WP从内存中的另一个位置获取它。

注:阅读this post 对于将变量传递给partials的更一般的处理。

SO网友:WordPress Mechanic

There are two solutions:

1) 使用类似thisglobal的变量$userdata;

$userdata = //object you want inside partial;
然后使用

global $userdata; 在里面single.php 或回路等。

参考号:https://developer.wordpress.org/reference/functions/get_template_part/

2) 继续做你现在做的事情,除了一次改变而不是get_template_part使用include_once(\'filename.php\')

相关推荐

wordpress custom fields loop

我需要执行wordpress自定义字段循环:以下代码可以更好地描述:<?php $term = get_term_by(\'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) ); $query = new WP_Query(array( \'post_type\' => \'recipe\', \'meta_key\' => \'recipe_sta