如何使用 php 为 while 循环做一个简码?
How to do a shortcode for a while loop with php?
我是 PHP 的初学者,我一直在尝试通过添加短代码来创建一个可以显示我的 while 循环的函数。我知道 add_shortcode 的语法在函数中需要 return,但我似乎无法让它在我的 while 循环中显示字符串。当我尝试 returning 字符串时,它只显示最后一个值,而不是循环。任何输入将不胜感激!
function events_homepage() {
global $connection;
mysqli_select_db($connection);
$query = ("SELECT * FROM events WHERE start_date >= CURDATE() ORDER BY start_date LIMIT 3");
$result = $connection->query($query);
while ($row = $result->fetch_assoc()) {
$title = $row['title'];
$start_date = date('M d, Y', strtotime($row['start_date']));
$location = $row['location'];
$link = $row['link'];
$str = "<p class='events_homepage_date'>$start_date</p> <p class='events_homepage_title'><a href='$link' target='_blank'>$title</a></p> <p class='events_homepage_location'>$location</p>";
echo $str;
}
return;
}
add_shortcode( 'events_homepage_shortcode', 'events_homepage' );
你是对的,你需要在短代码功能中 return。您缺少的部分是您需要 return 简码函数中的整个输出,您不能回显它。
因此,您需要连接 $str,并在函数末尾输出构建的字符串。以下代码的更新版本将产生所需的输出。
function events_homepage() {
global $connection;
mysqli_select_db($connection);
$query = ("SELECT * FROM events WHERE start_date >= CURDATE() ORDER BY start_date LIMIT 3");
$result = $connection->query($query);
$str = "";
while ($row = $result->fetch_assoc()) {
$title = $row['title'];
$start_date = date('M d, Y', strtotime($row['start_date']));
$location = $row['location'];
$link = $row['link'];
$str .= "<p class='events_homepage_date'>$start_date</p> <p class='events_homepage_title'><a href='$link' target='_blank'>$title</a></p> <p class='events_homepage_location'>$location</p>";
}
return $str;
}
add_shortcode( 'events_homepage_shortcode', 'events_homepage' );
我是 PHP 的初学者,我一直在尝试通过添加短代码来创建一个可以显示我的 while 循环的函数。我知道 add_shortcode 的语法在函数中需要 return,但我似乎无法让它在我的 while 循环中显示字符串。当我尝试 returning 字符串时,它只显示最后一个值,而不是循环。任何输入将不胜感激!
function events_homepage() {
global $connection;
mysqli_select_db($connection);
$query = ("SELECT * FROM events WHERE start_date >= CURDATE() ORDER BY start_date LIMIT 3");
$result = $connection->query($query);
while ($row = $result->fetch_assoc()) {
$title = $row['title'];
$start_date = date('M d, Y', strtotime($row['start_date']));
$location = $row['location'];
$link = $row['link'];
$str = "<p class='events_homepage_date'>$start_date</p> <p class='events_homepage_title'><a href='$link' target='_blank'>$title</a></p> <p class='events_homepage_location'>$location</p>";
echo $str;
}
return;
}
add_shortcode( 'events_homepage_shortcode', 'events_homepage' );
你是对的,你需要在短代码功能中 return。您缺少的部分是您需要 return 简码函数中的整个输出,您不能回显它。
因此,您需要连接 $str,并在函数末尾输出构建的字符串。以下代码的更新版本将产生所需的输出。
function events_homepage() {
global $connection;
mysqli_select_db($connection);
$query = ("SELECT * FROM events WHERE start_date >= CURDATE() ORDER BY start_date LIMIT 3");
$result = $connection->query($query);
$str = "";
while ($row = $result->fetch_assoc()) {
$title = $row['title'];
$start_date = date('M d, Y', strtotime($row['start_date']));
$location = $row['location'];
$link = $row['link'];
$str .= "<p class='events_homepage_date'>$start_date</p> <p class='events_homepage_title'><a href='$link' target='_blank'>$title</a></p> <p class='events_homepage_location'>$location</p>";
}
return $str;
}
add_shortcode( 'events_homepage_shortcode', 'events_homepage' );