锚点正在由当前页面 URL 修改


Anchor is Being Modified by Current Page URL

在我的网站中,我在以下页面:

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/

相反,引用 URL:Preparadores de Oposiciones a <a href="<?php $enlace_especialidad ?>"><?php echo $term->name ?></a> 的部分链接到:

mysite.com/especialidad/ensenanza/formacion-profesional/?地区=阿拉瓦

问题是 ?region=alava 不在 var $enlace_especialidad 中,我不知道它在锚点中使用时是如何出现的。另一方面是当前页面URL,我想一定有关系。

上次编辑

您忘记在链接之前回显,因此定位点无效。这就是为什么您之前看到打印输出不一致的原因。


?region=alava在这里,因为它是以区域作为参数的$_GET请求的结果。因此,它是对您的URL部分的补充。

所以你的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是辅助信息域而不是术语 ID。

这就是为什么你会得到get_term_link( $taxonomia_region ); mysite.com/especialidad/ensenanza/formacion-profesional/,因为你将 slug 作为参数传递。

而且你会得到mysite.com/especialidad/ensenanza/formacion-profesional/?region=alava get_term_link( $term );,因为你传递一个对象作为参数。

来源 : https://developer.wordpress.org/reference/functions/get_term_link/