我有一个网站,我有一个称为“小横幅”的帖子类型,基本上是我需要在普通页面上调用的广告(这很好,我已经这样做了),但我还需要在分类术语上使用此功能。
ACF本身没有选择分类术语的功能,只是为了过滤其中的帖子进行选择。
我该怎么做?
这是我在普通页面上调用广告的代码-
<div id="small-banner-top">
<?php
$smallbanners = get_posts(array(
\'post_type\' => \'small-banner\',
\'posts_per_page\' => \'-1\',
\'meta_query\' => array(
array(
\'key\' => \'show_on_post\', // name of custom field
\'value\' => \'"\' . get_the_ID() . \'"\', // matches exaclty "123", not just 123. This prevents a match for "1234"
\'compare\' => \'LIKE\'
)
)
));
?>
<div class="my-slider" style="width: 380px;">
<ul>
<?php if( $smallbanners ): ?>
<?php foreach( $smallbanners as $smallbanner ): ?>
<?php
$photo = get_field(\'small_banner_image\', $smallbanner->ID);
$bannerlink = get_field(\'url\', $smallbanner->ID);
?>
<li>
<a href="<?php echo $bannerlink; ?>">
<img src="<?php echo $photo[\'url\']; ?>" alt="<?php echo $photo[\'alt\']; ?>">
</a>
</li>
<?php endforeach; ?>
<?php endif; ?>
</ul>
</div>
</div>
到目前为止,我只使用了taxonomy字段选项,并选择了我希望它显示的分类术语,并在名为taxonomy-directory\\u entry\\u type的自定义页面上使用了此代码。php(分类术语称为目录条目类型)。
<?php
/*
* Query posts for a relationship value.
* This method uses the meta_query LIKE to match the string "123" to the database value a:1:{i:0;s:3:"123";} (serialized array)
*/
$smallbanners = get_posts(array(
\'post_type\' => \'small-banner\',
\'posts_per_page\' => \'-1\',
\'meta_query\' => array(
array(
\'key\' => \'show_on_tax\', // name of custom field
\'compare\' => \'LIKE\'
)
)
));
?>
<div class="my-slider" style="width: 380px;">
<ul>
<?php if( $smallbanners ): ?>
<?php foreach( $smallbanners as $smallbanner ): ?>
<?php
$photo = get_field(\'small_banner_image\', $smallbanner->ID);
$bannerlink = get_field(\'url\', $smallbanner->ID);
?>
<li>
<a href="<?php echo $bannerlink; ?>">
<img src="<?php echo $photo[\'url\']; ?>" alt="<?php echo $photo[\'alt\']; ?>">
</a>
</li>
<?php endforeach; ?>
<?php endif; ?>
</ul>
</div>
这带来了所有的广告,但我正在努力创造逻辑,使其只带来选定的广告。任何帮助都将不胜感激,
谢谢
最合适的回答,由SO网友:Kieran McClung 整理而成
这是基于这样的假设,即您有一个名为“show\\u on\\u tax”的自定义字段,用于自定义分类法“目录条目类型”,该字段在编辑小横幅时显示(请参见下图)。这允许您选择要在其中显示横幅的自定义税务术语。这应该会让你得到排序,但如果没有,请留下评论。
<?php
// taxonomy-directory_entry_type.php template file
// Get currently viewed term id
$term_id = get_queried_object()->term_id;
// Get all banners with show_on_tax custom field matching to $term_id
$args = array(
\'post_type\' => \'small-banner\',
\'posts_per_page\' => -1,
\'meta_query\' => array(
array(
\'key\' => \'show_on_tax\',
\'value\' => $term_id,
\'compare\' => \'LIKE\'
)
)
);
// Create custom banner query
$banner_query = new WP_Query( $args );
// Check if anything is found and do the custom loop
if ( $banner_query->have_posts() ) : ?>
<div class="my-slider" style="width: 380px;">
<ul>
<?php while ( $banner_query->have_posts() ) : $banner_query->the_post(); ?>
<?php $photo = get_field( \'small_banner_image\', get_the_ID() ); ?>
<li>
<a href="<?php the_field( \'small_banner_image\' ); ?>">
<img src="<?php echo $photo[\'url\']; ?>" alt="<?php echo $photo[\'alt\']; ?>">
</a>
</li>
<?php endwhile; ?>
</ul>
</div>
<?php
endif;
wp_reset_postdata();
?>