中的获取标题未按我想要的方式呈现时出现问题

时间:2014-03-06 作者:Max

很难给这个问题起个标题。所以问题是,如果我的页面标题是“BLA BLA”,我的href链接将无法工作。

<a  href="#<?php echo get_the_title();?"> <?php echo get_the_title();?>  </a>
如果它能自动将其转换为

 bla&nbsp;bla 
所以我要

 href=#bla&nbsp;bla.
我希望你能理解我现在的处境唯一的选择就是在页面标题中加上

bla&nbsp;bla
这是我的循环,它是页面中的一个菜单,调用子页面:

 <?php 

$args = array (
    \'posts_per_page\' => -1, //Showing all the pages
    \'post_type\' =>  \'page\', //Retrieving pages not posts.
    \'post_parent\'   => $post->ID,
  \'orderby\' => \'menu_order\',
                \'order\' => \'ASC\'

    );

$the_query = new WP_query($args);
while($the_query->have_posts()):
    $the_query->the_post();
        if ($the_query->current_post == 0){ ?>

         <li class="active"> <a href="#<?php echo get_the_title();?>" data-toggle="tab"><?php echo get_the_title(); ?></a> </li>


      <?php  }
        else{   ?>

  <li>  <a href="#<?php echo get_the_title();?>" data-toggle="tab"><?php echo get_the_title(); ?></a> </li>


  <?php }
endwhile;
wp_reset_postdata();

  ?>

2 个回复
SO网友:s_ha_dum

核心功能the_permalink(), 和get_permalink() 是为完成您试图手动破解的任务而构建的。这些将为链接提供完整的URL。

你所做的充其量只是一个相对链接,这是有问题的,而且也不能保证标题会与URL匹配。Permalinks以几种不同的方式进行转换,它们可以手动编辑,如果需要,还可以通过添加附录强制其唯一性。

编辑:

要创建内部链接,只需要唯一标识符。有几种方法可以做到这一点,而不会偏离核心代码太远。

<a  href="#<?php echo sanitize_title_with_dashes(get_the_title()); ?>"> 
  <?php echo get_the_title();?>  
</a>
sanitize_title_with_dashes() 是Core在将标题转换为post slug时使用的函数。

这意味着在一个循环中,可以使用post slug本身来获得大致相同的效果。

<a  href="#<?php echo $post->post_name; ?>"> 
  <?php echo get_the_title();?>  
</a>

SO网友:Shazzad

HTML标记类或id属性不能具有非字母数字值,因此您需要清理标题以创建适当的标题。你可以使用sanitize_html_class 这样做。或者,对于相对卫生处理,您可以使用下面的方法。

function wpse_sanitize_html_class( $class ){
    //Strip out any % encoded octets
    $sanitized = preg_replace( \'|%[a-fA-F0-9][a-fA-F0-9]|\', \'\', $class );

    //Limit to A-Z,a-z,0-9,_,-
    $sanitized = preg_replace( \'/[^A-Za-z0-9_-]/\', \'-\', $sanitized );

    return $sanitized;
}
在生产中使用它-

<a  href="#<?php 
    echo wpse_sanitize_html_class( get_the_title() ); ?>"><?php 
    echo get_the_title();?>
</a>
以及内容包装器元素,id属性也需要清理。

<div id="<?php 
    echo wpse_sanitize_html_class( get_the_title() );?>"><?php 
    // the content  ?>
</div>
简单解决方案可以使用post id而不是title。像这样-

<a  href="#<?php the_ID(); ?>"><?php echo get_the_title(); ?></a>
<div id="<?php the_ID(); ?>"><?php // the content  ?></div>

结束

相关推荐