列出自定义字段中的自定义分类术语

时间:2014-04-01 作者:itrogers

我试图为从自定义字段中提取的每个图像输出一个与自定义分类法关联的术语列表,如下所示:

$portfolio_images = get_field(\'portfolio_gallery\');
每个图像都有与之关联的标准WP字段,例如大小、标题、标题等。我想从media_category 分类学

我正在使用get_the_terms 在另一个变量中,但我认为foreach 陈述任何帮助都将不胜感激。完整代码:

<?php

$portfolio_images = get_field(\'portfolio_gallery\');

foreach( $portfolio_images as $portfolio_image ):

$labels = get_the_terms( $portfolio_image[\'ID\'], \'media_category\' );
?>

<li class="gallery-item" data-myorder="<?php  echo $labels;  ?>">
     <img src="<?php echo $portfolio_image[\'sizes\'][\'portfolio-thumbnail\']; ?>" alt="<?php echo $portfolio_image[\'alt\']; ?>" />
     <div class="mask">
            <a class="mask-link" href="<?php echo $portfolio_image[\'url\']; ?>">
                <div class="mask-content">
                        <h4><?php echo $portfolio_image[\'title\']; ?></h4>
                        <p><?php echo $portfolio_image[\'caption\']; ?></p>
                </div>
            </a>
     </div>
</li>

 <?php  endforeach; ?>

1 个回复
最合适的回答,由SO网友:fischi 整理而成

你面临的问题是get_the_terms() 返回array (或false或aWP_Error-对象),而不是字符串。

因此,假设您有多个图像术语,可以使用如下代码:

if( $labels && !is_wp_error( $labels ) ) {
    foreach( $labels as $label ) {

        $labelarray[] = $label->name;

    }
    $labelstring = join( ", ", $labelarray );
}
如果没有错误,这将在标签中循环。您可能需要调整$labelstring 根据您的需要,这一个可以产生如下值label1, label2, label3. 如果不需要,可以跳过冒号。

您的整个代码如下所示:

<?php

$portfolio_images = get_field(\'portfolio_gallery\');

foreach( $portfolio_images as $portfolio_image ):
    unset( $labelarray );
    $labels = get_the_terms( $portfolio_image[\'ID\'], \'media_category\' );
    if( $labels && !is_wp_error( $labels ) ) {
        foreach( $labels as $label ) {

            $labelarray[] = $label->name;

        }
        $labelstring = join( ", ", $labelarray );
    }

?>

    <li class="gallery-item" data-myorder="<?php  echo $labelstring;  ?>">
         <img src="<?php echo $portfolio_image[\'sizes\'][\'portfolio-thumbnail\']; ?>" alt="<?php echo $portfolio_image[\'alt\']; ?>" />
         <div class="mask">
                <a class="mask-link" href="<?php echo $portfolio_image[\'url\']; ?>">
                    <div class="mask-content">
                            <h4><?php echo $portfolio_image[\'title\']; ?></h4>
                            <p><?php echo $portfolio_image[\'caption\']; ?></p>
                    </div>
                </a>
         </div>
    </li>

<?php  endforeach; ?>

结束

相关推荐

想要wp_get_post_Terms以任意顺序返回,该怎么办?

下面的函数按字母顺序返回,而不是按任意顺序返回是否可以-不-按字母顺序返回,但按数组中给出的确切顺序返回?add_filter(\'the_content\', \'my_function\'); function my_function($content) { if ( is_single() && in_category( \'5\' ) ) { the_post_thumbnail(\'thumbnail\', array(\'class\' => \'