2013-04-23 84 views
1

我有一个变量,我想添加doc-它,所以它读出doc- $ user_role这样的高级自定义字段在wordpress中。PHP高级自定义字段中继器字段

我知道如何与回声做到这一点发现很难以这种格式一些帮助,请:)

<?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

我不明白你的问题是如何工作的完整说明。你能详细说明一下吗? – str 2013-04-23 12:45:08

+0

这是错误的,如果(get_field('doc- $ user_role')):?> 它是如何被写入?我有一个用户角色名称,并希望添加它的文档。 – mariovass 2013-04-23 12:47:00

回答

1

“”与“'文字有区别。当你把变量放在“”中时,它将被php解析,因为它是字符串。当你把它放进'''它被视为字符数组,并且变量不会被解析,这就是为什么你需要使用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

http://php.net/manual/en/language.types.string.php

+0

惊人的解释谢谢罗伯特! – mariovass 2013-04-23 13:46:26

+0

不客气:) – Robert 2013-04-23 13:52:17

0
if(get_field("doc-$user_role")): ?> 

是正确的,因为在由单引号变量包围的字符串是而不是已解析。仅在带双引号的字符串中。