【问题标题】:Wordpress - page_link filterWordpress - page_link 过滤器
【发布时间】:2014-12-12 16:28:08
【问题描述】:

我正在尝试更改默认页面的帖子类型固定链接,我想在其末尾添加一个“.php”,例如:home_url() . post_name . '.php'

我不能使用 WordPress 永久链接页面,因为我已经在使用它:/%category%/%postname%.php,这不会影响默认页面的帖子类型。

所以我这样做了:

function wp_pages_permalink( $permalink, $post_id ) {
    if ( empty( $post_id ) ) return $permalink;

    $post = get_post( $post_id );

    return home_url( $post->post_name . '.php'  );
}

add_filter( 'page_link', 'wp_pages_permalink', 10, 2 );

但是,当我尝试访问该页面时收到 404,我已经通过访问永久链接页面刷新了重写规则

【问题讨论】:

    标签: php wordpress permalinks


    【解决方案1】:

    正如怀疑的那样,这需要重写规则。我不知道为什么 post_link 过滤器不需要添加重写规则。

    function ba_rewrite() {
        add_rewrite_rule('^([^/]*)?.php', 'index.php?pagename=$matches[1]', 'top');
    }
    
    add_action( 'init', 'ba_rewrite' );
    

    【讨论】:

      【解决方案2】:

      所以你只是改变了链接的输出 用你想要的地址 但实际页面没有改变;

      我认为您应该针对 $permalink_structure 而不仅仅是 $permalink, 尝试使用类似的东西:

      function wp_pages_permalink( $permalink_structure, $post_id ) {
          if ( empty( $post_id ) ) return $permalink_structure ;
      
          $post = get_post( $post_id );
      
          return ( $permalink_structure . '.php'  );
      }
      
      add_filter( 'page_link', 'wp_pages_permalink', 10, 2 ); 
      

      我根据您的代码进行了更改,因此您可能需要处理它...

      无论如何,如果您想查看永久链接发生的情况,请查看文档 (WP_rewrite class)

      【讨论】:

      • 那么,你对我的代码做了什么?你改了变量名?现在应该可以用了吧?我不这么认为。
      • 不,我不/不知道代码是否适用于您的项目。但是查看 WP_rewrite 类,我看到 $permalink_structure 方法是创建永久链接的地方,可能是直接访问它不是好习惯...
      【解决方案3】:

      尝试执行以下步骤:

      1. 在永久链接中添加扩展名(设置->永久链接) -> 我使用这种格式:/%post_id%/%postname%.php

      2. 保存

      3. 在您的 wordpress 文件中转到 wp-includes -> rewrite.php 并在第 1148 行替换这行代码

        $this->page_structure = $this->root 。 '%pagename%';

      这个

      $this->page_structure = $this->root . '%pagename%.php';
      
      1. 保存并立即尝试。

      【讨论】:

      • 不,我当然不会替换 wp-includes 文件夹中的一行。
      • 我已经回答了我的问题stackoverflow.com/a/27439590/2101942 切勿尝试编辑 wp-content 文件夹之外的文件。
      猜你喜欢
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 2019-08-11
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      相关资源
      最近更新 更多