您好,我遇到了一些短代码问题,因为它的结果出现在页面内容上方,而它应该出现在短代码所在的位置。这是短代码。。。
<?php
if (!defined(\'ABSPATH\')) exit;
/* creacion del shortcode [cotizador id=""] */
function cotizador_shortcode($atts)
{
/* le pasamos los argumentos al shortcode dentro de un array */
$args = array(
\'post_type\' => \'vehiculos\', /* se toma de post_type.php */
\'id\' => $atts[\'id\']
// \'familia\' => $atts[\'familia\']
);
$cotizador = new WP_Query($args); /* sirve para imprimir el post_type en el shortcode */
$single_car_query = cotizador_car_query($args[\'id\']);
// $title_query = cotizador_query_select($single_car_query[\'post_id\']);
$precio = $single_car_query[\'car_price\'];
$enganche = $single_car_query[\'car_price\'] * 0.10;
// echo "<pre>";
// var_dump($enganche);
// echo "</pre>";
?>
<!-- THE CODE BELOW SHOULD APPEAR IN THE PAGE CONTENT AS A TABLE -->
<form name="cotizador_enviar" id="cotizador_enviar">
<div id="cotizador" class="cotizador">
<table class="table table-hover">
<thead>
<tr>
<th scope="col">Modelo</th>
<th scope="col">Precio</th>
<th scope="col">Enganche</th>
<th scope="col">Bono</th>
</tr>
</thead>
<tbody>
<tr>
<td>Otto</td>
<td><?php echo esc_attr("$". $precio); ?></td>
<td><?php echo esc_attr("$". $enganche); ?></td>
<td>No</td>
</tr>
</tbody>
</table>
</div>
</form>
<?php
}
add_shortcode(\'cotizador\', \'cotizador_shortcode\');
如您所见,结果是HTML,但当我在页面内容中放置短代码时,它看起来是这样的:
当结果显示在图片下方时,您可以在wp admin中看到:
我知道如果我们使用;“回声”;这种情况会发生,可以使用;return“返回”;但这只适用于变量(我猜),但在我的情况下,结果不是变量,所以我很困惑
谢谢!!
最合适的回答,由SO网友:Ivan Shatsky 整理而成
您应该使用output control functions 如果您想这样做:
function cotizador_shortcode($atts)
{
... your code here ...
ob_start();
?>
<!-- THE CODE BELOW SHOULD APPEAR IN THE PAGE CONTENT AS A TABLE -->
... HTML here ...
<?php
$output = ob_get_contents();
ob_end_clean();
return $output;
}
add_shortcode(\'cotizador\', \'cotizador_shortcode\');