Convert $ _GET to permalink

时间:2021-02-09 作者:davnshi

hi

How do I convert links from

我的网站/电视/帖子?go=季节(mysite/tv/title post)?go=字符

to

mysite/tv/title post/seasons
mysite/tv/title post/characters

This code

    <?php
    $post_id = $_GET["go"];
     ?>
    
    <nav>
    <ul class="subNav">
    <li class="<?php echo $post_id == \'\' ? \'selected\' : \'\'; ?>"><a href="<?php the_permalink() ?>">info</a></li>
    <li class="<?php echo $post_id == \'seasons\' ? \'selected\' : \'\'; ?>"><a href="<?php the_permalink() ?>?go=seasons">seasons</a></li>
    <li class="<?php echo $post_id == \'characters\' ? \'selected\' : \'\'; ?>"><a href="<?php the_permalink() ?>?go=characters">characters</a></li>
    </ul>
    </nav>
    
    <?php 
    if($post_id == \'seasons\'):
        $setion = get_template_part(\'inc/parts/single/seasons\');
    elseif($post_id == \'characters\'):
        $setion = get_template_part(\'inc/parts/single/characters\');
    else:
        $setion = get_template_part(\'inc/parts/single/info\');
    endif;
     ?>
需要帮忙吗<我厌倦了这些经历^^

1 个回复
SO网友:JakeParis

解决这个问题的最简单方法可能是根据参数的值向body标记添加类。您只需要确保对其进行消毒。可以使用body_class 将当前所有类作为数组馈送的筛选器。

您可以在模板文件的顶部尝试以下操作:

add_filter(\'body_class\', function($classes) {
  if( ! isset($_GET[\'view\']) )
    return $classes;
  
  $classes[] = "post-layout-" . esc_attr($_GET[\'view\']);

  return $classes;
});
现在基于身体有一类post-layout-listpost-layout-grid, 您可以使用不同的样式来设置帖子列表。

这样做的优点是可以减少php逻辑的工作量。请注意,此答案旨在帮助您思考策略,而不是作为您可以复制和粘贴的代码。

相关推荐

Problem with permalinks

我已经更改了类别的基本名称,现在它是“博客”,工作正常。但当我通过/blog/%category%/%postname%/更改结构时。显示404。如果我删除结构中的blog,它会再次工作,但我想使用blog word。问题出在哪里?非常感谢。