我使用带有CMB2插件的WordPress来创建自定义元框和字段。
它工作得很好,但是我不能在循环中得到文件字段类型image alt。
我在名为successful_students_block的元框中有可重复的字段类型文件successful_students_block_image。
我的代码如下所示。它可以工作,但我不知道如何获得图像的另一种文本。
<?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' );我花了几天的时间来解决这个问题。欢迎任何人,如果知道,将很高兴得到任何答案^^
发布于 2017-02-24 21:35:12
我不是很确定,但我想你可以用下面的代码访问图像ID (在你的foreach循环中):
$image_id = $successful_students_item['successful_students_block_image_id'];
一个文件上传器。默认情况下,它将存储文件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']; ?>"/>发布于 2017-02-24 23:21:35
我觉得你应该试试这个。
$alt_text = wp_get_attachment_metadata( $image_id, true ) ;
echo $alt_text['sizes']['thumbnail']['file']; 有关wp_get_attachment_metadata()的更多信息
万事如意。
https://stackoverflow.com/questions/42439353
复制相似问题