我有一个变量,我想添加doc-它所以它会在wordpress中读出doc- $ user_role这样的高级自定义字段。
我知道怎么做回声,发现很难以这种格式提供一些帮助请:)
<?php
$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);
if(get_field('doc-$user_role')): ?>
<ul>
<?php while(has_sub_field('doc-$user_role')): ?>
<li>
<h3><?php the_sub_field('doc_name'); ?></h3>
<p><?php the_sub_field('doc_description'); ?></p>
<a href="<?php the_sub_field('download_doc'); ?>" target="_blank"><img src="<?php bloginfo('template_directory'); ?>/images/download.png" alt="download_button"></a>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
答案 0 :(得分:1)
&#34;&#34;之间存在差异。和&#39;&#39;文字。将变量放入&#34;&#34;它会被php解析,因为它是字符串。当你把它放入&#39;&#39;它被视为char数组,而变量将不会被解析,这就是你需要使用&#34;&#34; literal或sprintf()或者你可以使用点运算符连接两个字符串。
所以你的选择是:
if(get_field("doc-$user_role"))
if(get_field('doc-'.$user_role))
if(get_field("doc-".$user_role))
if(get_field(sprintf("doc-%s", $user_role)))
当你有很长的字符串并且你不想让代码混乱时,sprintf非常有用。
http://php.net/manual/en/function.sprintf.php
在这里,您可以完整地解释字符串在PHP中的工作原理
答案 1 :(得分:0)
if(get_field('doc-' . $user_role))
答案 2 :(得分:0)
if(get_field("doc-$user_role")): ?>
是正确的,因为在单引号变量包围的字符串中不解析。仅限带双引号的字符串。