在一个短代码中包装HTML/PHP


Wordpress: Wrap HTML/PHP in a shortcode

wordpress和PHP新手。

我如何围绕一些HTML/PHP包装这个短代码?我试过使用do_shortcode,但没有工作。

<?php echo do_shortcode( [timed-content-rule id="101"] ) ?> 
<?php echo do_shortcode( [/timed-content-rule] ) ?>
PHP/HTML

<?php
$rows = get_field('breakfast');
$row_count = count($rows);
$i = rand(0, $row_count - 1);
?>
<h1>
    <?php echo $rows[ $i ]['dish_name']; ?>
</h1>
<p>
   <?php echo $rows[ $i ]['dish_description'];  ?>
</p>
<h3>
    Served<span><?php echo $rows[ $i ]['time_served'];  ?></span>
</h3>

你不能在PHP周围"包装"一个短代码(除非你打算让它不做任何事情)。短代码用于生成客户端代码字符串(HTML, CSS, Javascript等)。我建议查看一下短代码API,找出如何使用短代码来生成输出,而不是试图在短代码周围包装它。

举个例子,假设你想让一些内容只在一定时间后显示…您可以使用短代码来生成内容(HTML),并确保它具有javascript(或jQuery)正在寻找的"ID"或"CLASS"。当javascript看到"CLASS"时,它知道在将其更改为block或类似的东西之前将其显示设置为none那么多秒。

看看wordpress页面

http://codex.wordpress.org/Function_Reference/do_shortcode

echo do_shortcode('[iscorrect]'.$text_to_be_wrapped_in_shortcode.'[/iscorrect]');

在你的情况下,你可以将你的HTML添加到一个变量中然后添加到ie:

$contentToShow = '<h1>'.$rows[ $i ]['dish_name'].'</h1>';
$contentToShow.= '<p>'.$rows[ $i ]['dish_description'].'</p>';
$contentToShow.= '<h3>Served<span>'.$rows[ $i ]['time_served'].'</span></h3>';
echo do_shortcode('[timed-content-rule]'.$contentToShow.'[/timed-content-rule]');
马蒂