1

我有一个变量,我想将 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; ?>
4

3 回答 3

1

"" 和 '' 文字之间存在差异。当您将变量放入“”时,它将被php解析,因为它是字符串。当您将其放入 '' 时,它被视为 char 数组并且不会解析变量,这就是您需要使用 "" 文字或 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

于 2013-04-23T13:08:06.140 回答
0

使用连接运算符

if(get_field('doc-' . $user_role))
于 2013-04-23T12:46:47.070 回答
0
    if(get_field("doc-$user_role")): ?>

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

于 2013-04-23T12:49:30.577 回答