Что не так с этим шорткодом? Я получаю это в неправильном месте внутри контента
Вопрос
Привет сообществу,
Я стараюсь построить шорт -код, который печатает логотип Creative Commons и немного текста, все работает нормально, за исключением того, что я поместил шорт -код в конце поста, но шорткод переходит в верхнюю часть пост -контента,
Я использую код рече:
<?php // Creative Commons License Shortcode
function creativecommons( $atts, $content = null )
{
extract( shortcode_atts( array(
'type' => '',
'code' => '',
), $atts ) );
{ ?>
<div class="license">
<div class="cc-img">
<img src="<?php bloginfo('template_directory'); ?>/images/cc.png" width="32" height="32" alt="Creative Commons License" />
</div>
<div class="cc-content">
<h4><?php echo $type ?></h4>
<small><?php echo $code ?></small>
</div>
</div><!-- end of license -->
<div class="clear"></div><!-- clear div -->
<?php }
return;
}
add_shortcode('cc1', 'creativecommons');
?>
Я что -то упускаю здесь или что -то еще связано с моей проблемой?
Большое спасибо,
Филипп
Решение
Пара вещей: я думаю, что ваша функция короткометражного кода должна вернуть значение, а не печатать его, и вы не должны иметь вывод, обернутый в такие брекеты (тот, который непосредственно перед первым Div, и тот, который прямо перед возвратом). Если это не какой -то неясный синтаксис PHP, который я никогда не видел (что вполне возможно)?
Насколько я знаю, всякий раз, когда вы закрываете тег PHP-даже внутри функции-анализатор просто немедленно выведет результаты, а не вернет их.
Другие советы
Единственное, что не так с скобками в определении функции, это то, что закрывающая скобка такая же, как открывающая скобка. Заявление о возврате неуместно. Это должно находиться в пределах скобок определения функции и должно выглядеть примерно так (из школ W3):
function add($x,$y)
{
$total=$x+$y;
return $total;
}
echo "1 + 16 = " . add(1,16);
Я не уверен, какую ценность вы хотите вернуть.
Кроме того, предыдущий комментарий верен. Вы не можете повторить значения переменных, определенных в функции вне этой функции. Я считаю, что переменные, определенные в функции, являются локальными для этой функции. Вот где вступает в игру оператор.
Видимо, вы хотите вернуть несколько значений из вашей функции. Поскольку функция не может вернуть более одного значения, вы можете сделать это с помощью массива. Затем вы можете получить свои значения вне функции.
См. Следующий пример, который я взял в Интернете.
function small_numbers()
{
return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers();