检查此代码:
function slide_group() {
register_taxonomy(\'Group\', \'slides\', array(
\'hierarchical\' => true /*visualizza come le categorie*/, \'label\' => \'Group\',
\'query_var\' => true, \'rewrite\' => true));}
add_action(\'init\', \'slide_group\', 0);
function square_slider_template() {
// Query Arguments
$args = array(
\'post_type\' => \'slides\',
\'posts_per_page\' => 5
);
// The Query
$the_query = new WP_Query( $args );
// Check if the Query returns any posts
if ( $the_query->have_posts() ) {
// Start the Slider ?>
<div class="flexslider">
<ul class="slides">
<?php
// The Loop
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li>
<?php // Check if there\'s a Slide URL given and if so let\'s a link to it
if ( get_post_meta( get_the_id(), \'square_slideurl\', true) != \'\' ) { ?>
<a href="<?php echo esc_url( get_post_meta( get_the_id(), \'square_slideurl\', true ) ); ?>">
<?php }
// The Slide\'s Image
echo the_post_thumbnail();
// Close off the Slide\'s Link if there is one
if ( get_post_meta( get_the_id(), \'square_slideurl\', true) != \'\' ) { ?>
</a>
<?php } ?>
</li>
<?php endwhile; ?>
</ul><!-- .slides -->
</div><!-- .flexslider -->
<?php }
// Reset Post Data
wp_reset_postdata();
}
// Slider Shortcode
function square_slider_shortcode() {
ob_start();
square_slider_template();
$slider = ob_get_clean();
return $slider;
}
add_shortcode( \'slider\', \'square_slider_shortcode\' );
这段代码使用缩略图图像基于“slider”自定义帖子类型创建一个滑块。我还创建了一个自定义分类法
我要做的是基于分类术语创建一个“foreach”循环,该循环使用分类术语名称([设计]、[开发]等…或[滑块类型=设计]、[滑块类型=开发])创建一个短代码,该短代码只包含分类术语的帖子<例如,[设计]仅包含/显示具有设计分类法的帖子,[开发]仅包含/显示具有开发分类法的帖子等
编辑/更新#2
function square_slider_shortcode( $atts = array(), $content = \'\' )
{
$atts = shortcode_atts( array(
\'type\' => \'00\', // default type
), $atts, \'square_slider\' );
// Sanitize input:
$pid = sanitize_title( $atts[\'type\'] );
// Output
return square_slider_template( $pid );
}
add_shortcode( \'slider\', \'square_slider_shortcode\' );
function square_slider_template( $pid = \'\' )
{
$args = array(
\'post_type\' => \'slides\',
\'p\' => $pid,
); ?>
<?php
// The Query
$query = new WP_Query( $args );
// Check if the Query returns any posts
if ( $query->have_posts() ) {
// Start the Slider ?>
<div class="flexslider">
<ul class="slides">
<?php
// The Loop
while ( $query->have_posts() ) : $query->the_post();
for ($i = 1; $i <= 10; $i++):
$num_slide="slide_" . $i;
$slide = get_field($num_slide);
?>
<?php if (!empty($slide)): ?><li><img src="<?php echo $slide; ?>"></li>
<?php endif; ?>
<?php endfor; ?>
<?php endwhile; ?>
</ul><!-- .slides -->
</div><!-- .flexslider -->
<?php }
// Reset Post Data
wp_reset_postdata();
}
我用这种方法求解,我用幻灯片创建一个循环,然后创建滑块。这不是一种聪明的方法,也不是一种正确的方法,但它确实有效:)
更新:除了滑块出现之外,其他一切都有效
always 位于页面顶部,与编辑器内部的位置无关<我试着把它放在另一个短代码中,比如
[one_third][slider type="98"][/one_third][one_third_last]casual words[/one_third_last]
但它出现在div标记之外,就像您在图像中看到的一样
SO网友:birgire
您希望使用same 短代码回调?
为什么不定义一个带有term属性的单短码?例如
[sc term="london"]
ps:
我认为你的问题在于$tax_term->name
part,它可以是类似伦敦金融城的字符串,但这不是有效的短代码名称。尝试$tax_term->slug
相反,但我认为这不是一个好策略!
另一个问题是,您正在foreach循环中定义一个函数。这会给您带来如下错误:Fatal error: Cannot redeclare examples_shortcode() ...
.
您应该考虑使用WP_DEBUG
在你的发展中。Here\'s 一个良好的起点。
更新:
您可以使用以下示例:
function square_slider_shortcode( $atts = array(), $content = \'\' )
{
$atts = shortcode_atts( array(
\'type\' => \'sport\', // default type
\'nr\' => 5, // default number of slides
), $atts, \'square_slider\' );
// Sanitize input:
$type = sanitize_title( $atts[\'type\'] );
$nr = (int) $atts[\'nr\'];
// Output
return square_slider_template( $type, $nr );
}
add_shortcode( \'slider\', \'square_slider_shortcode\' );
其中:
function square_slider_template( $type = \'\', $nr = 5 )
{
// Query Arguments
$args = array(
\'post_type\' => \'slides\',
\'posts_per_page\' => $nr,
\'tax_query\' => array(
array(
\'taxonomy\' => \'slides\',
\'field\' => \'slug\',
\'terms\' => $type,
),
),
);
// The Query
$the_query = new WP_Query( $args );
// ... etc ...
return $html;
}
那么您的短代码语法将是:
[slider type="sport" nr="5"]
您现在可以在此处更改术语(
type
) 以及幻灯片的数量(
nr
) 满足您的需求。