我将WordPress与CMB2插件一起创建自定义元框和字段。
它可以完美地工作,但我无法在循环中获得文件字段类型的图像alt。
我在称为 successful_students_block
的meta框中具有可重复的字段类型文件 successful_students_block_image
。
我的代码看起来像这样。它有效,但我不知道如何获取图像alt文本。
<?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
中的后端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' );
试图几天来解决这个问题。请任何人知道任何答案会很高兴^^
我不太确定,但是我认为您可以使用以下方式访问IMAIMA 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,您可以获得所有可属于的可用数据。即:
$image_alt = get_post_meta( $image_id, '_wp_attachment_image_alt', true);
您的代码看起来像这样:
<?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']; ?>"/>
我认为您需要尝试。
$alt_text = wp_get_attachment_metadata( $image_id, true ) ;
echo $alt_text['sizes']['thumbnail']['file'];
有关WP_GET_ATTACHMENT_METADATA()
的更多信息最好的。