このコードを確認してください。
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' );
このコードは、サムネイル画像を使用して「スライダー」カスタム投稿タイプに基づいてスライダーを作成しています。カスタム分類法も作成しました。
私がすることは、分類学用語に基づいてショートコードを作成する分類学用語に基づく「foreach」ループを作成することです([design]、[Develop]など)。[OR taxonomy_termの投稿のみを含む[slider type = design]、[slider type = development])。
例えば、[design]はデザイン分類法のあるポストのみを含む/表示し、[Develop]は開発分類法のあるポストのみを含む/表示します。
私はこの段階にいます:
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タグの外側に現れます
あなたは同じショートコードコールバックで潜在的に膨大な数の異なるショートコードを定義したいですか?
Term属性を使ってsingleshortcodeを定義しないのはなぜですか。例えば
[sc term="london"]
ps:
あなたの問題は$tax_term->name
の部分にあると思います。これはCity of Londonのような文字列になり得ますが、これは有効なショートコード名ではありません。代わりに$tax_term->slug
を試してください、しかし私はそれが良い戦略だとは思わない!
もう1つの問題は、foreachループ内で関数を定義しているということです。 Fatal error: Cannot redeclare examples_shortcode() ...
のようなエラーになるはずです。
開発にはWP_DEBUG
の使用を検討してください。 これが 良い出発点です。
あなたは例えば使用することができます:
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"]
ここで、必要に応じてterm(type
)およびスライド数(nr
)を変更できます。
それはあなたがseft-closingショートコードを必要としているようです。
http://codex.wordpress.org/Shortcode_API を読むのはよいでしょう。