php - 在简码中显示 db 结果的正确方法是什么?
问题描述
我知道我不应该在简码函数中回显任何内容,但我不明白执行此操作的正确方法。我看到有人问这个问题,但似乎没有人知道答案。
// my shortcode function
function simpledir_shortcode_list() {
// get list of items in directory
global $wpdb;
$result = $wpdb->get_results('SELECT * FROM wp_simpledir LIMIT 10');
?>
<?php
$count = 1;
foreach ( $result as $listing )
{
if ($count % 2 == 0) { ?>
<div class="alternate" valign="top">
<?php }else{ ?>
<div valign="top">
<?php
}
?>
<div class="listing-item">
<p><?= $listing->name; ?></p>
</div>
<?php
$count++;
}
?>
</div>
<?php }
add_shortcode('simpledir_shortcode_list','simpledir_shortcode_list');
?>
如果我在任何页面上使用 [simpledir_shortcode_list] 当然 Wordpress 会给出错误,但是即使这样可以正确输出数据库结果的步骤是什么。
解决方案
实际上,您需要返回输出而不是显示它。为此,您可以将所有内容存储在变量中并返回:
// my shortcode function
function simpledir_shortcode_list() {
// get list of items in directory
global $wpdb;
$output = '';
$result = $wpdb->get_results('SELECT * FROM wp_simpledir LIMIT 10');
$count = 1;
foreach ( $result as $listing )
{
if ($count % 2 == 0) {
$output .= '<div class="alternate" valign="top">';
} else {
$output .= '<div valign="top">';
}
$output .= '<div class="listing-item"><p>' . $listing->name . '</p></div>';
$count++;
}
$output .= '</div>';
return $output;
}
add_shortcode('simpledir_shortcode_list', 'simpledir_shortcode_list');
顺便说一句,您的结束标签似乎</div>
应该在foreach
循环内部而不是现在的外部:
// my shortcode function
function simpledir_shortcode_list() {
// get list of items in directory
global $wpdb;
$output = '';
$result = $wpdb->get_results('SELECT * FROM wp_simpledir LIMIT 10');
$count = 1;
foreach ( $result as $listing )
{
if ($count % 2 == 0) {
$output .= '<div class="alternate" valign="top">';
} else {
$output .= '<div valign="top">';
}
$output .= '<div class="listing-item"><p>' . $listing->name . '</p></div>';
$output .= '</div>';
$count++;
}
return $output;
}
add_shortcode('simpledir_shortcode_list', 'simpledir_shortcode_list');
推荐阅读
- multithreading - 停止等待 UDP 数据而不冻结 Go 中的主 goroutine 的辅助 goroutine
- javascript - Jquery - 按值设置选定选项不起作用
- ruby-on-rails - 如何在Rails中安全地输出与符号未转义的查询参数
- php - Laravel domPDF 无法加载外部 css 文件
- algorithm - 在 O(logk) 时间内删除 K 个排序的双向链表的最小值
- typescript - 过滤打字稿中枚举键的公共子字符串
- python - 将字符串列表指定为函数参数类型
- python - 从具有定义维度的平面列表创建嵌套列表
- regex - 正则表达式前 15 个之后的所有符号/字符
- locust - 如何将值从 csv 传递到 URL