php - 使用 WordPress 中的简码打印/返回函数的所有“结果”
问题描述
我正在尝试打印与特定 WordPress 帖子相关的所有术语。我找到了很好的起点(我的方法基于这篇文章:https ://theeventscalendar.com/knowledgebase/k/add-a-list-of-category-links-below-the-search-bar/ ),但是,我没有得到我想要的结果,这将是一行带有链接的术语,用逗号分隔。
例如:
<a href="link to term 1">Term 1</a>, <a href="link to term 2">Term 1</a>
我目前拥有的是:
add_shortcode( 'tribe_links_ineko', 'tribe_get_links_ineko' );
function tribe_get_links_ineko () {
$terms = get_terms( [
'taxonomy' => Tribe__Events__Main::TAXONOMY
] );
if ( empty( $terms ) || is_wp_error( $terms ) ) {
return;
}
echo '<div><p>';
foreach ( $terms as $single_term ) {
$url = esc_url( get_term_link( $single_term ) );
$name = esc_html( get_term_field( 'name', $single_term ) );
return "<a href='$url'>$name</a>";
}
echo'</p><div>';
};
但是,这只会返回其中一项。如果我使用 echo 而不是 return,它会返回所有术语,但它们会打印到页面顶部(使用简码放置输出)。据我了解,这是返回的预期行为,但是,我找不到关于为什么 echo 打印在错误位置以及如何解决此问题的解释。
也许有人可以指出我正确的方向,因为我不知道 php :(
解决方案
通过在 ing之前连接成单个变量来构建字符串return
,而不是直接return
ing:
add_shortcode( 'tribe_links_ineko', 'tribe_get_links_ineko' );
function tribe_get_links_ineko () {
$terms = get_terms( [
'taxonomy' => Tribe__Events__Main::TAXONOMY
] );
if ( empty( $terms ) || is_wp_error( $terms ) ) {
return;
}
$out = '<div><p>';
foreach ( $terms as $single_term ) {
$url = esc_url( get_term_link( $single_term ) );
$name = esc_html( get_term_field( 'name', $single_term ) );
$out = $out . "<a href='$url'>$name</a>";
}
$out = $out . '</p><div>';
return $out;
};
推荐阅读
- python - SQLAlchemy 给出 TypeError 从 SQLite 数据库读取字符串
- asp.net - .rdlc 报告条形图仅显示类别组中 16 个项目中的 3 个
- python - 为什么我的程序没有读取 if else 命令?
- python - 在调用列表中的字典中的值时收到“TypeError:列表索引必须是整数或切片,而不是字典”
- sql - 按顺序取最后一个值
- php - 使用 wpdb > 获取与分类相关的用户列表
- architecture - Revit 2022 Family 已编辑但在计划中显示先前版本的行但未在编辑器中
- html - HTML5 视频标签突然停止在 Safari 桌面上工作
- android - 从 LatLng 坐标列表中绘制路径 (Android)
- python - 为什么这个 FOR 需要缩短数组的长度?