在我的网站中,我在以下页面中:
mysite.com/especialidad/ensenanza/formacion-profesional/?region=alava
包含该页面的PHP模板的相关部分是:
<?php
/* Get the Queried Object */
$term = get_queried_object();
$enlace_especialidad = get_term_link( $term );
/* Get the Queried Object */
$user_query = new WP_User_Query(
array(
'meta_key' => 'especialidad_preparador',
'meta_value' => $term->term_id,
'number' => 100,
'meta_query' => $meta_query,
)
);
?>
<?php echo $enlace_especialidad; ?>
<h1 class="titulo_taxonomia">Preparadores de Oposiciones a <a href="<?php $enlace_especialidad ?>"><?php echo $term->name ?></a>
<?php
if ($_GET['region']) {
$taxonomia_region = get_term_by('slug', $_GET['region'], 'region');
echo 'en <a href="'. get_term_link( $taxonomia_region ) .'">'. $taxonomia_region->name .'</a>';
}
?>
当我回显var $ enlace_especialidad(只是为了检查它的值)时,结果是:
mysite.com/especialidad/ensenanza/formacion-profesional /
相反,引用网址的部分:Preparadores de Oposiciones <a href="<?php $enlace_especialidad ?>"><?php echo $term->name ?></a>
链接到:
mysite.com/especialidad/ensenanza/formacion-profesional/的 ?区域=阿拉瓦
问题是?region = alava不在var $ enlace_especialidad中,我不知道它在锚中的使用方式。另一方面,它是当前的页面URL,我想必须有一个关系。
答案 0 :(得分:2)
最后编辑
您忘记在链接之前回显,因此锚点无效。这就是为什么你之前看到与打印输出不一致的原因。
?region=alava
在此处,因为它是$_GET
请求的结果,其中region为参数。所以它是你的URL部分的补充。
所以你的网址很好,另外一部分在下面的部分中进行处理:
<?php
if ($_GET['region']) {
$taxonomia_region = get_term_by('slug', $_GET['region'], 'region');
echo 'en <a href="'. get_term_link( $taxonomia_region ) .'">'. $taxonomia_region->name .'</a>';
}
?>
get_term_link( $taxonomia_region )
部分包含$_GET['region']
结果部分(如果存在)。
请参阅$ _GET 的文档: http://php.net/manual/en/reserved.variables.get.php
修改强>
在评论中进行讨论后,当您使用不同类型的参数时,这种方法会有所不同,即get_term_link( $term );
或get_term_link( $taxonomia_region );
由于该术语可以是对象,整数或字符串,因此请确保 您传入的任何数字都会显式转换为整数 (例如:(int)$ term_id)。否则该函数将假设 $ term是一个slug而不是一个术语ID。
这就是为什么你将mysite.com/especialidad/ensenanza/formacion-profesional/
与get_term_link( $taxonomia_region );
联系起来,因为你传递了一个slug作为参数。
您使用mysite.com/especialidad/ensenanza/formacion-profesional/?region=alava
得到get_term_link( $term );
,因为您将对象作为参数传递。
来源:https://developer.wordpress.org/reference/functions/get_term_link/