如何在functions.php
中的函数add_shortcode中添加php代码例如:
<?php $images = get_field('img_novinki'); if( $images ) { ?>
<div id="carousel" class="flexslider">
<ul class="slides gallery">
<?php foreach( $images as $image ): ?>
<li>
<a href="<?php echo $image['url']; ?>"><img src="<?php echo $image['sizes']['thumbnail']; ?>" alt="<?php echo $image['alt']; ?>" /></a>
</li>
<?php endforeach; ?>
</ul>
</div> <?php } ?>
PHP函数中的短代码:
function my_novinki( $atts )
{
return '';
}
add_shortcode( 'my_novinki', 'my_novinki');
答案 0 :(得分:0)
从我看到你需要做以下事情。在functions.php中添加:
function my_novinki( $atts )
{
$images = get_field('img_novinki');
if( $images ) {
echo '<div id="carousel" class="flexslider">';
echo '<ul class="slides gallery">';
foreach( $images as $image ):
echo '<li>';
echo '<a href="'. $image["url"] .'"><img src="'.$image["sizes"]["thumbnail"] .'" alt="'. $image["alt"] .'" /></a>';
echo '</li>';
endforeach;
echo '</ul>';
echo '</div>';
}
}
add_shortcode( 'my_novinki', 'my_novinki');
然后可以使用[my_novinki]
或使用<?php echo do_shortcode['my_novinki'];
答案 1 :(得分:0)
参见Codex:&#34; ..短代码调用的函数永远不会产生任何类型的输出。短代码函数应该返回用于替换短代码的文本。&#34;
您需要将代码包装在ob_start()和ob_get_clean()中:
add_shortcode( 'my_novinki', function my_novinki( $atts ) {
ob_start();
$images = get_field( 'img_novinki' );
if( $images ) { ?>
<div id='carousel' class='flexslider'>
<ul class='slides gallery'> <?php
foreach( $images as $image ) { ?>
<li>
<a href='<?php echo $image['url']; ?>'>
<img src='<?php echo $image['sizes']['thumbnail']; ?>' alt='<?php echo $image['alt']; ?>' />
</a>
</li> <?php
} ?>
</ul>
</div> <?php
}
$out = ob_get_clean();
return $out;
});