我在自定义帖子类型的单个页面上显示自定义分类法中的值。
我有一个自定义的帖子类型“artwork”,分类为“artists”。如何在单个帖子页面上显示艺术家姓名(如果为帖子分配了多个艺术家,则显示多个艺术家姓名)。如果没有为帖子指定艺术家,则页面上不会显示任何艺术家。这很好用。
<?PHP // ARTIST(s) attached to Artwork
$artists = get_the_terms( get_the_ID(), \'artists\' );
$artistsArray = array();
if( ! empty( $artists ) ) :
echo "<div>Artist: <strong>";
foreach ( $artists as $artist ){
$artistsArray[] = \'<span><a href="/artists/\'.ucfirst($artist->slug).\'">\'.ucfirst($artist->name).\'</a></span>\';
}
echo implode( \', \', $artistsArray );
echo "</strong><div>";
endif; ?>
在我的艺术家分类法中,我有一个自定义字段“艺术家instagram”。在下面的一篇博文中,我有一个链接指向这位艺术家的instagram账户。
<?php
$artistigs = get_the_terms( get_the_ID(), \'artists\' );
if( ! empty( $artistigs ) ) : ?>
<?php foreach( $artistigs as $artistig ) : ?>
<div><i class="fab fa-instagram"></i> <strong><a href="https://instagram.com/<?php the_field(\'artist-instagram\', $artistig); ?>" target="_blank">@<?php the_field(\'artist-instagram\', $artistig); ?></a></strong></div>
<?php endforeach;
endif;
?>
链接显示正确。但当一个艺术家没有instagram时,我想把它藏起来。我正在使用
if( ! empty() )
, 但如果艺术家的instagram字段为空,它仍会显示链接。为什么?
谢谢你的帮助!
编辑更新:
使用此代码,Instagram链接仅显示在分配给具有IG链接(根据需要)的艺术家的帖子上。问题:它只输出$artistig
以及foreach
忽略(例如,测试文本未输出)。
<?php
$artists = get_the_terms( get_the_ID(), \'artists\' );
if( !empty( $artists ) ) :
foreach( $artists as $artist ) :
$artistig = the_field( \'artist-instagram\', $artist );
if( !empty( $artistig ) ) :
echo "IG User TEST: ". var_dump( $artistig ) ." END TEST";
endif;
endforeach;
endif;
?>
最合适的回答,由SO网友:Tony Djukic 整理而成
你不是在检查艺术家的instagram字段是否为空,而是在检查“艺术家”一词是否为空,而事实并非如此。
<?php
$artistigs = get_the_terms( get_the_ID(), \'artists\' );
if( ! empty( $artistigs ) ) : ?>
//This will execute if the artist term is not empty
endif;
?>
我自己不使用ACF,所以不能百分之百确定
the_field()
可以,但请尝试以下操作:
<?php
$artists = get_the_terms( get_the_ID(), \'artists\' );
if( !empty( $artists ) ) : ?>
<?php foreach( $artists as $artist ) :
$artistig = get_field( \'artist-instagram\', $artist );
if( !empty( $artistig ) ) :
echo \'<div>\';
echo \'<i class="fab fa-instagram"></i> <strong><a href="https://instagram.com/\' . $artistig . \'" target="_blank">@\' . $artistig . \'</a></strong>\';
echo \'</div>\';
endif;
endforeach;
endif;
?>
================
UPDATE
要解决您的更新,请
var_dump()
真的会弄乱格式,所以让我们删除它。
<?php
$artists = get_the_terms( get_the_ID(), \'artists\' );
if( !empty( $artists ) ) :
foreach( $artists as $artist ) :
$artistig = get_field( \'artist-instagram\', $artist );
if( !empty( $artistig ) ) :
echo \'IG User TEST: \'. $artistig .\' END TEST\';
endif;
endforeach;
endif;
?>