在 WordPress 中使用短代码打印/Return 函数的所有 "results"
Print / Return all "results" of a function by using a shortcode in WordPress
我正在尝试打印与特定 WordPress post 相关的所有条款。我找到了很好的起点(我的方法基于这篇文章: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>';
};
不过,这只是return的其中一项。如果我使用 echo 而不是 return,它会 return 包含所有术语,但它们会打印到页面顶部(使用短代码放置输出)。据我了解,这是 return 的预期行为,但是,我找不到关于为什么 echo 打印在错误位置以及如何解决此问题的解释。
也许有人可以指出我正确的方向,因为我不知道 php :(
通过在 return
ing 之前连接成单个变量来构建字符串,而不是直接 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;
};
我正在尝试打印与特定 WordPress post 相关的所有条款。我找到了很好的起点(我的方法基于这篇文章: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>';
};
不过,这只是return的其中一项。如果我使用 echo 而不是 return,它会 return 包含所有术语,但它们会打印到页面顶部(使用短代码放置输出)。据我了解,这是 return 的预期行为,但是,我找不到关于为什么 echo 打印在错误位置以及如何解决此问题的解释。
也许有人可以指出我正确的方向,因为我不知道 php :(
通过在 return
ing 之前连接成单个变量来构建字符串,而不是直接 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;
};