2016-04-26 64 views
0

修改我的地盘我在以下页面:锚是由当前页面的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>'; 
    } 
?> 

当我附和变量$ enlace_especialidad(只是为了检查它的值)的结果是:

mysite.com/especialidad/ensenanza/formacion-profesional/

相反,这指的是URL的一部分:Preparadores德Oposiciones一个<a href="<?php $enlace_especialidad ?>"><?php echo $term->name ?></a>链接:

mysite.com/especialidad/ensenanza/formacion-profesional/ ?region = alava

问题是?region = alava不在var $ enlace_especialidad中,我不知道它在锚点中的使用方式。另一方面,它是当前页面的URL,我想这里必须有一个关系。

+0

'$ taxonomia_region-> name'添加到您的锚标记 – RiggsFolly

回答

2

最后的编辑

你忘了链接之前呼应,所以其锚固失效。这就是为什么你之前看到印刷输出不一致的原因。


?region=alava是在这里,因为它是一个请求$_GET与区域作为参数的结果。所以它是你的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);

由于该术语可以是一个对象,整数或字符串,因此可以将s 您传入的任何数字都明确转换为整数 (例如:(int)$ term_id)。否则,函数将假定 $ term是一个段塞而不是术语ID。

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

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

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

+0

你好文森特G,我不明白。以下代码如果($ _GET ['region']){<?php $ taxonomia_region = get_term_by('slug',$ _GET ['region'],'region'); echo'en '. $taxonomia_region->name .''; } ?>'用以下URL输出锚点:mysite.com/region/alava/。所以,我想这应该输出mysite.com/especialidad/ensenanza/formacion-profesional/的代码的第一部分,没有别的。 –

+0

我认为这是因为'get_queried_object()'函数。尝试使用函数'get_permalink()'来检索URL:https://developer.wordpress.org/reference/functions/get_permalink/ 你说你在这个页面上'mysite.com/especialidad/ensenanza/ formacion-profesional /?region = alava',所以当你将链接悬停时,你会得到相同的URL?尝试删除网址中的参数,然后再次悬停链接。 –

+0

我没有看到关系,get_term_link($ taxonomia_region)等于mysite.com/region/alava/,但在锚中使用时未被修改。虽然get_term_link($ term)等于mysite.com/especialidad/ensenanza/formacion-profesional/正在被修改。 –