1

doc- を追加したい変数があるので、ワードプレスの高度なカスタム フィールドに対してこのように 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() を使用するか、ドット演算子を使用して 2 つの文字列を連結できます。

あなたのオプションは次のとおりです。

  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 に答える