Что не так с этим шорткодом? Я получаю это в неправильном месте внутри контента

wordpress.stackexchange https://wordpress.stackexchange.com/questions/6187

  •  16-10-2019
  •  | 
  •  

Вопрос

Привет сообществу,
Я стараюсь построить шорт -код, который печатает логотип 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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top