首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从循环cmb2中的CMB2文件中获取图像alt

从循环cmb2中的CMB2文件中获取图像alt
EN

Stack Overflow用户
提问于 2017-02-24 21:02:38
回答 2查看 1.1K关注 0票数 0

我使用带有CMB2插件的WordPress来创建自定义元框和字段。

它工作得很好,但是我不能在循环中得到文件字段类型image alt。

我在名为successful_students_block的元框中有可重复的字段类型文件successful_students_block_image

我的代码如下所示。它可以工作,但我不知道如何获得图像的另一种文本。

代码语言:javascript
复制
<?php
$successful_students_items = get_post_meta(get_the_id() , 'successful_students_block_box', true);

if (!empty($successful_students_items))
{
  foreach($successful_students_items as $successful_students_item)
  { ?>
    <div class="ipd-je-8 ipd-rz-8 ipd-pv-12 ipd-ke-24">
      <div class="rjeudirnskxzi nnu">
        <div class="h1ge6swchqzj6de">
          <div class="h1ge6swchqzj6de_cvz">
            <figure class="o309iruhgtybgyu5">
              <blockquote><?php echo $successful_students_item['successful_students_block_testimonial']; ?>
                <div class="ingi3h38d8jj4"></div>
              </blockquote>
              <img alt="" src="<?php echo $successful_students_item['successful_students_block_image']; ?>"/>
              <div class="ewr4i9548jfdeuthie">
                <h5><?php echo $successful_students_item['successful_students_block_name_lastname']; ?>
                  <span>
                  <br/>
                    <?php echo $successful_students_item['successful_students_block_position']; ?>
                  </span>
                </h5>
              </div>
            </figure>
          </div>
        </div>
      </div>
    </div>
  <?php
    }
  } ?>

这是我在functions.php中的后端

代码语言:javascript
复制
function successful_students_blocks_register_metabox() {
$prefix = 'successful_students_block_';  
  $cmb = new_cmb2_box( array(
        'id'            => $prefix . 'metabox',
        'title'         => esc_html__( 'Successful Students', 'cmb2' ),
        'object_types'  => array( 'page', ), 
        'show_on'       => array( 'key' => 'page-template', 'value' => 'fo4if93/tpl-successful-students.php' ),
    ) );

  $group_field_id = $cmb->add_field( array(
    'id'            => $prefix . 'box',
    'type'          => 'group',
    'repeatable'    => true, 
    'options'       => array(
    'group_title'   => __( 'Student {#}', 'cmb2' ),
    'add_button'    => __( 'Add Another Student', 'cmb2' ),
    'remove_button' => __( 'Remove Student', 'cmb2' ),
    'sortable'      => true, 
    ),
  ) );

  $cmb->add_group_field( $group_field_id, array(
    'name'          => 'Name Lastname',
    'id'            => $prefix . 'name_lastname',
    'type'          => 'text',
  ) );


  $cmb->add_group_field( $group_field_id, array(
    'name'          => 'Image',
    'id'            =>  $prefix . 'image',
    'type'          => 'file',
    'options'       => array(
    'url'           => false, 
    ),
    'text'    => array(
    'add_upload_file_text' => 'Add File'
    ),
  ) );

}
add_action( 'cmb2_init', 'successful_students_blocks_register_metabox' );

我花了几天的时间来解决这个问题。欢迎任何人,如果知道,将很高兴得到任何答案^^

EN

回答 2

Stack Overflow用户

发布于 2017-02-24 21:35:12

我不是很确定,但我想你可以用下面的代码访问图像ID (在你的foreach循环中):

$image_id = $successful_students_item['successful_students_block_image_id'];

CMB2 Wiki

一个文件上传器。默认情况下,它将存储文件url,并允许附件或url。此字段类型还将存储附件ID (对于获取不同的图像大小很有用)。它会将其存储在$id中。'_ id ',因此如果您的字段ID为wiki_test_image,则ID将存储在wiki_test_image_id中。

有了映像ID,您可以获得属于的所有可用数据。即:

代码语言:javascript
复制
$image_alt = get_post_meta( $image_id, '_wp_attachment_image_alt', true);

您的代码可能如下所示:

代码语言:javascript
复制
<?php
$image_id = $successful_students_item['successful_students_block_image_id'];
$image_alt = get_post_meta( $image_id, '_wp_attachment_image_alt', true);
?>

<img alt="<?php echo esc_attr( $image_alt ); ?>" src="<?php echo $successful_students_item['successful_students_block_image']; ?>"/>
票数 0
EN

Stack Overflow用户

发布于 2017-02-24 23:21:35

我觉得你应该试试这个。

代码语言:javascript
复制
$alt_text = wp_get_attachment_metadata( $image_id, true ) ;
echo  $alt_text['sizes']['thumbnail']['file']; 

有关wp_get_attachment_metadata()的更多信息

万事如意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42439353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档