循环遍历具有相似标签/标签中常见字符的自定义字段

时间:2018-07-25 作者:sonja

我为我的自定义帖子类型“books”创建了几个自定义字段

有一个语言复选框。每当检查一种语言时,就会添加该语言的几个自定义字段(即标题、封面图像、isbn)。

当显示“book”的内容时,我想循环浏览我的自定义字段,并在可折叠面板中显示属于一起的字段。以下是我目前掌握的情况:

           <?php $fields = get_field_objects();
             if ($fields): ?>
             <ul>
              <?php
                foreach ($fields as $name => $field):
                  if (stripos($name, \'isbn\') !== false) : ?>
                     <button data-toggle="collapse" data-target="#demo">Deutsch/<?php echo substr($field[\'label\'], strpos($field[\'label\'], " ") + 1); ?></button>
                     <div id="demo" class="collapse">
                     <?php //isbn
                        echo $field[\'prepend\'] . " " . $field[\'value\']; ?> </br>
                        <?php echo the_field(\'titel_\'.substr($field[\'label\'], strpos($field[\'label\'], " ") + 1)); ?>

                      </div>

                   <?php endif;
                 endforeach; ?>
                 </ul>
              <?php endif; ?>
折叠按钮显示正确的数据(即德语/英语、德语/阿拉伯语),但标题和ISBN都属于显示的第一语言。

如果有任何提示,我将不胜感激!

$fields变量的var\\u dump():EDIT 删除了var\\u转储,因为它太大了!

Edit

这是我代码的更新:它现在显示了正确的字段和数据,但我不知道如何将其放在可折叠面板中。。

 <b>Erhältlich in den folgenden Sprachausgaben:</b>

        <?php
        $fields = get_field_objects();
        if ($fields): ?>
            <br>
            <?php
            foreach ($fields as $name => $field): ?>

                <?php //hoerprobe
                if (get_field(\'horprobe_verfuegbar\') == 1) :
                    if (stripos($name, \'hoerprobe\') !== false) : ?>
                        <?php echo $field[\'label\'];
                        $file = get_field($name); ?>
                        <audio controls>
                            <source src="<?php echo $file[\'url\']; ?>">
                            Your browser does not support the audio tag.
                        </audio>
                        </br>

                    <?php endif;
                else :
                    // echo \'false\';
                endif; ?>

                <?php
                if (stripos($name, \'isbn\') !== false) : ?>
                    <button data-toggle="collapse" data-target="#demo">
                        Deutsch/<?php echo substr($field[\'label\'], strpos($field[\'label\'], " ") + 1); ?></button>

                    <?php //isbn
                    echo $field[\'prepend\'] . " " . $field[\'value\']; ?> </br>

                    <?php //titel
                    echo the_field(\'titel_\' . substr($field[\'name\'], strpos($field[\'name\'], "_") + 1)); ?> </br>

                    <?php //coverimage
                    $titelbild = get_field(\'titelbild_\' . substr($field[\'name\'], strpos($field[\'name\'], "_") + 1)); ?>
                    <?php if ($titelbild) : ?>
                        <img src="<?php echo $titelbild[\'url\']; ?>" alt="<?php echo $titelbild[\'alt\']; ?>"/>
                    <?php endif; ?></br>
                <?php endif;
            endforeach;
        endif; ?>
添加此时

<div id="demo" class="collapse">
                       ...</div>
无论我点击哪个按钮,它只会打开第一语言的数据。。

Edit 2

音频文件在折叠面板内不工作。其工作原理如下:

 <b>Erhältlich in den folgenden Sprachausgaben:</b>

        <?php
        $fields = get_field_objects();
        if ($fields): ?>
            <br>
            <?php
            foreach ($fields as $name => $field): ?>

                <?php //hoerprobe

                if (get_field(\'horprobe_verfuegbar\') == 1) :

                    if (stripos($name, \'hoerprobe\') !== false) : ?>

                        <?php echo $field[\'label\'];
                        $file = get_field($name); ?>
                        <audio controls>
                            <source src="<?php echo $file[\'url\']; ?>">
                            Your browser does not support the audio tag.
                        </audio>
                        </br>

                    <?php endif;
                else :
                    // echo \'false\';
                endif; ?>
                <?php
                if (stripos($name, \'isbn\') !== false) : ?>
                    <?php $lang = substr($field[\'name\'], strpos($field[\'name\'], "_")); ?>
                    <button data-toggle="collapse" data-target="#demo<?php echo $lang ?>">
                        Deutsch/<?php echo substr($field[\'label\'], strpos($field[\'label\'], " ") + 1); ?> </button>

                    <div id="demo<?php echo $lang ?>" class="collapse">
                        Lorem ipsum dolor text....

                        <?php //isbn
                        echo $field[\'prepend\'] . " " . $field[\'value\']; ?> </br>

                        <?php //titel
                        echo the_field(\'titel_\' . substr($field[\'name\'], strpos($field[\'name\'], "_") + 1)); ?> </br>

                        <?php //coverimage
                        $titelbild = get_field(\'titelbild_\' . substr($field[\'name\'], strpos($field[\'name\'], "_") + 1)); ?>
                        <?php if ($titelbild) : ?>
                        <img src="<?php echo $titelbild[\'url\']; ?>" alt="<?php echo $titelbild[\'alt\']; ?>"/>
                        <?php endif; ?></br>
                    </div>
                <?php endif;
            endforeach;
        endif; ?>
但只要我移动hoerprobe 折叠面板内部的一部分,不再显示。。

1 个回复
SO网友:nmr

您在循环中显示数据,因此所有项都具有相同的IDdiv id="demo". 添加一些后缀以使其唯一。例如:

$lang = substr($field[\'name\'], strpos($field[\'name\'], "_");

echo \'<button data-toggle="collapse" data-target="#demo-\'. $lang .\'"> ....\';

echo \'<div id="demo-\'. $lang .\'" class="collapse"> ...</div>\'

Edit

折叠面板内的音频不工作,因为键$name 从不同时满足以下两个条件:

if (stripos($name, \'isbn\') !== false): 
   if (stripos($name, \'hoerprobe\') !== false)
$name 要么是hoerprobe_arabischisbn_arabisch.

请尝试以下代码:

if (stripos($name, \'isbn\') !== false) : ?>
   <?php $lang = substr($field[\'name\'], strpos($field[\'name\'], "_")); ?>
   <button data-toggle="collapse" data-target="#demo<?php echo $lang ?>">
      Deutsch/<?php echo substr($field[\'label\'], strpos($field[\'label\'], " ") + 1); ?> </button>

    <div id="demo<?php echo $lang ?>" class="collapse">
         Lorem ipsum dolor text....

       <?php //isbn
          echo $field[\'prepend\'] . " " . $field[\'value\']; ?> </br>

       <?php //titel
          echo the_field(\'titel\'. $lang); ?> </br>

       <?php //coverimage
          $titelbild = get_field(\'titelbild\' . $lang); ?>
          <?php if ($titelbild) : ?>
              <img src="<?php echo $titelbild[\'url\']; ?>" alt="<?php echo $titelbild[\'alt\']; ?>"/>
          <?php endif; ?></br>

       if (isset($fields[\'hoerprobe_\'.$lang])) : ?>

           <?php
           $hoerprobe_field_name = \'hoerprobe\'.$lang;
           $hoerprobe_field = $fields[$hoerprobe_field_name ];
           echo $hoerprobe_field[\'label\'];
           $file = get_field(hoerprobe_field_name); ?>

           <audio controls>
               <source src="<?php echo $file[\'url\']; ?>">
                    Your browser does not support the audio tag.
               </audio></br>
       <?php endif;

    </div>
<?php endif;

结束

相关推荐

如何链接到详细信息页面(single.php?)在wp_loop中

我进行了如下wp\\U查询。这是其中的一部分。这是可行的。$args = .....; $query = new WP_Query($args); while($query->have_posts() ) : $query->the_post(); ?> <div class=\"each\"> <h4><?php the_title(); ?> &

循环遍历具有相似标签/标签中常见字符的自定义字段 - 小码农CODE - 行之有效找到问题解决它

循环遍历具有相似标签/标签中常见字符的自定义字段

时间:2018-07-25 作者:sonja

我为我的自定义帖子类型“books”创建了几个自定义字段

有一个语言复选框。每当检查一种语言时,就会添加该语言的几个自定义字段(即标题、封面图像、isbn)。

当显示“book”的内容时,我想循环浏览我的自定义字段,并在可折叠面板中显示属于一起的字段。以下是我目前掌握的情况:

           <?php $fields = get_field_objects();
             if ($fields): ?>
             <ul>
              <?php
                foreach ($fields as $name => $field):
                  if (stripos($name, \'isbn\') !== false) : ?>
                     <button data-toggle="collapse" data-target="#demo">Deutsch/<?php echo substr($field[\'label\'], strpos($field[\'label\'], " ") + 1); ?></button>
                     <div id="demo" class="collapse">
                     <?php //isbn
                        echo $field[\'prepend\'] . " " . $field[\'value\']; ?> </br>
                        <?php echo the_field(\'titel_\'.substr($field[\'label\'], strpos($field[\'label\'], " ") + 1)); ?>

                      </div>

                   <?php endif;
                 endforeach; ?>
                 </ul>
              <?php endif; ?>
折叠按钮显示正确的数据(即德语/英语、德语/阿拉伯语),但标题和ISBN都属于显示的第一语言。

如果有任何提示,我将不胜感激!

$fields变量的var\\u dump():EDIT 删除了var\\u转储,因为它太大了!

Edit

这是我代码的更新:它现在显示了正确的字段和数据,但我不知道如何将其放在可折叠面板中。。

 <b>Erhältlich in den folgenden Sprachausgaben:</b>

        <?php
        $fields = get_field_objects();
        if ($fields): ?>
            <br>
            <?php
            foreach ($fields as $name => $field): ?>

                <?php //hoerprobe
                if (get_field(\'horprobe_verfuegbar\') == 1) :
                    if (stripos($name, \'hoerprobe\') !== false) : ?>
                        <?php echo $field[\'label\'];
                        $file = get_field($name); ?>
                        <audio controls>
                            <source src="<?php echo $file[\'url\']; ?>">
                            Your browser does not support the audio tag.
                        </audio>
                        </br>

                    <?php endif;
                else :
                    // echo \'false\';
                endif; ?>

                <?php
                if (stripos($name, \'isbn\') !== false) : ?>
                    <button data-toggle="collapse" data-target="#demo">
                        Deutsch/<?php echo substr($field[\'label\'], strpos($field[\'label\'], " ") + 1); ?></button>

                    <?php //isbn
                    echo $field[\'prepend\'] . " " . $field[\'value\']; ?> </br>

                    <?php //titel
                    echo the_field(\'titel_\' . substr($field[\'name\'], strpos($field[\'name\'], "_") + 1)); ?> </br>

                    <?php //coverimage
                    $titelbild = get_field(\'titelbild_\' . substr($field[\'name\'], strpos($field[\'name\'], "_") + 1)); ?>
                    <?php if ($titelbild) : ?>
                        <img src="<?php echo $titelbild[\'url\']; ?>" alt="<?php echo $titelbild[\'alt\']; ?>"/>
                    <?php endif; ?></br>
                <?php endif;
            endforeach;
        endif; ?>
添加此时

<div id="demo" class="collapse">
                       ...</div>
无论我点击哪个按钮,它只会打开第一语言的数据。。

Edit 2

音频文件在折叠面板内不工作。其工作原理如下:

 <b>Erhältlich in den folgenden Sprachausgaben:</b>

        <?php
        $fields = get_field_objects();
        if ($fields): ?>
            <br>
            <?php
            foreach ($fields as $name => $field): ?>

                <?php //hoerprobe

                if (get_field(\'horprobe_verfuegbar\') == 1) :

                    if (stripos($name, \'hoerprobe\') !== false) : ?>

                        <?php echo $field[\'label\'];
                        $file = get_field($name); ?>
                        <audio controls>
                            <source src="<?php echo $file[\'url\']; ?>">
                            Your browser does not support the audio tag.
                        </audio>
                        </br>

                    <?php endif;
                else :
                    // echo \'false\';
                endif; ?>
                <?php
                if (stripos($name, \'isbn\') !== false) : ?>
                    <?php $lang = substr($field[\'name\'], strpos($field[\'name\'], "_")); ?>
                    <button data-toggle="collapse" data-target="#demo<?php echo $lang ?>">
                        Deutsch/<?php echo substr($field[\'label\'], strpos($field[\'label\'], " ") + 1); ?> </button>

                    <div id="demo<?php echo $lang ?>" class="collapse">
                        Lorem ipsum dolor text....

                        <?php //isbn
                        echo $field[\'prepend\'] . " " . $field[\'value\']; ?> </br>

                        <?php //titel
                        echo the_field(\'titel_\' . substr($field[\'name\'], strpos($field[\'name\'], "_") + 1)); ?> </br>

                        <?php //coverimage
                        $titelbild = get_field(\'titelbild_\' . substr($field[\'name\'], strpos($field[\'name\'], "_") + 1)); ?>
                        <?php if ($titelbild) : ?>
                        <img src="<?php echo $titelbild[\'url\']; ?>" alt="<?php echo $titelbild[\'alt\']; ?>"/>
                        <?php endif; ?></br>
                    </div>
                <?php endif;
            endforeach;
        endif; ?>
但只要我移动hoerprobe 折叠面板内部的一部分,不再显示。。

1 个回复
SO网友:nmr

您在循环中显示数据,因此所有项都具有相同的IDdiv id="demo". 添加一些后缀以使其唯一。例如:

$lang = substr($field[\'name\'], strpos($field[\'name\'], "_");

echo \'<button data-toggle="collapse" data-target="#demo-\'. $lang .\'"> ....\';

echo \'<div id="demo-\'. $lang .\'" class="collapse"> ...</div>\'

Edit

折叠面板内的音频不工作,因为键$name 从不同时满足以下两个条件:

if (stripos($name, \'isbn\') !== false): 
   if (stripos($name, \'hoerprobe\') !== false)
$name 要么是hoerprobe_arabischisbn_arabisch.

请尝试以下代码:

if (stripos($name, \'isbn\') !== false) : ?>
   <?php $lang = substr($field[\'name\'], strpos($field[\'name\'], "_")); ?>
   <button data-toggle="collapse" data-target="#demo<?php echo $lang ?>">
      Deutsch/<?php echo substr($field[\'label\'], strpos($field[\'label\'], " ") + 1); ?> </button>

    <div id="demo<?php echo $lang ?>" class="collapse">
         Lorem ipsum dolor text....

       <?php //isbn
          echo $field[\'prepend\'] . " " . $field[\'value\']; ?> </br>

       <?php //titel
          echo the_field(\'titel\'. $lang); ?> </br>

       <?php //coverimage
          $titelbild = get_field(\'titelbild\' . $lang); ?>
          <?php if ($titelbild) : ?>
              <img src="<?php echo $titelbild[\'url\']; ?>" alt="<?php echo $titelbild[\'alt\']; ?>"/>
          <?php endif; ?></br>

       if (isset($fields[\'hoerprobe_\'.$lang])) : ?>

           <?php
           $hoerprobe_field_name = \'hoerprobe\'.$lang;
           $hoerprobe_field = $fields[$hoerprobe_field_name ];
           echo $hoerprobe_field[\'label\'];
           $file = get_field(hoerprobe_field_name); ?>

           <audio controls>
               <source src="<?php echo $file[\'url\']; ?>">
                    Your browser does not support the audio tag.
               </audio></br>
       <?php endif;

    </div>
<?php endif;

相关推荐

Increase offset while looping

我正在编写一个自定义帖子插件,它将自定义帖子分组显示为选项卡。每组4个岗位。是否可以编写一个偏移量随每次循环而增加的查询?因此,结果将是:-第一个查询显示从1到4的帖子-第二个查询显示从5到8的帖子-第三个查询显示从9到12的帖子等。 <div class=\"official-matters-tabs\"> <?php $args = array(\'post_type\' => \'official-matters\', \'showp