Anchor正在被当前页面URL修改

时间:2016-04-26 11:24:28

标签: php 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 /

相反,引用网址的部分: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,我想必须有一个关系。

1 个答案:

答案 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/