【问题标题】:How to create Custom Pagination Permalinks in wordpress如何在 wordpress 中创建自定义分页永久链接
【发布时间】:2016-07-24 11:42:49
【问题描述】:

我的 wordpress 博客中有一篇包含几页的文章。例如,如果我的博客中有以下链接:

http://example.com/heartbreaking-photos 知道如何更改第二页的链接

http://example.com/heartbreaking-photos/2http://example.com/heartbreaking-photos/CUSTOM-STRING

CUSTOM-STRING 旨在成为页面内的自定义标题

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    要实现这一点,您需要做两件事:

    1. 禁用默认的 WordPress 规范重定向 - 这是必要的,因为 WordPress 在遇到 URL 或查询参数中的页面参数时总是会重定向到 /2/ 页面。 p>

    2. 添加自定义重写规则以将自定义标题指向页面的第二页 - 这对于允许使用所需的链接格式基本上是必要的。

    就代码而言,这就是你所需要的(这是一个可行的解决方案,我刚刚在本地测试过):

    // Removes the canonical redirection
    remove_filter( 'template_redirect', 'redirect_canonical' );
    
    // Add custom rewrite rules
    add_action( 'init', 'my_add_custom_rewrite_rules' );
    function my_add_custom_rewrite_rules() {
        // Slug of the target page
        $page_slug = 'heartbreaking-photos';
    
        // Page number to replace
        $page_num = 2;
    
        // Title you wish to replace the page number with
        $title = 'custom-string';
    
        // Add the custom rewrite rule
        add_rewrite_rule(
            '^' . $page_slug . '/' . $title . '/?$',
            'index.php?pagename=' . $page_slug . '&page=' . $page_num, 'top'
        );
    }
    

    您可能需要在此处配置或更改三项内容:

    1. $page_slug - 这是您页面的 slug,在您的情况下是 heartbreaking-photos
    2. $page_num - 您的分页页数,在您的情况下是 2
    3. $title - 您希望使用的标题,而不是您的页码 2

    随意更改代码,或复制代码以涵盖更多其他情况,类似于此。

    编辑

    重要提示:使用代码后,请转到“设置”>“永久链接”并单击“保存更改”按钮。这将重建您的重写规则,并且是解决方案正常工作所必需的。

    希望对您有所帮助。如果您有任何问题,请告诉我。

    【讨论】:

    • 感谢您的回复,我在本地尝试了您的解决方案,但无法正常工作。为了确定,我尝试了两个不同的主题。我试图在functions.php 的开头和结尾添加代码。我还确保更改 post slug..任何想法在我的机器上还有什么不同可以阻止这个东西工作..?
    • 我已经更新了我的答案,因为我错过了一件小事。在对重写规则进行更改后(如此代码所做的那样),您应该转到设置 > 永久链接并单击“保存更改”按钮。这将使您的更改真正起作用,因为将重新生成重写规则。如果您在尝试后遇到问题,请告诉我。
    【解决方案2】:

    你可以试试这个法典。传递参数,您将获得页面 id、页面标题并使用它们 https://codex.wordpress.org/Function_Reference/get_pages

    或者你可以通过页面id调用页面标题

    $pagetitle= get_post_field( 'post_title', $page_id );
    

    【讨论】:

      【解决方案3】:

      好的,所以基本上你不想在页面下显示导航链接(使用css或修改子主题中的帖子模板)并添加你的自定义链接。如果我理解得很好:

      删除导航链接(取决于您的主题,但基本上):

      .nav-links { display: none; }
      

      您可以通过函数+自定义文件添加自定义链接:

      在您的帖子中创建一个自定义字段,例如“my-url”,请参阅 codex:https://codex.wordpress.org/Custom_Fields

      添加到您的functions.php(在子主题或自定义站点插件中):

      function my_page_add_to_content( $content ) {
      
          if ( ! empty(get_post_meta( get_the_ID(), 'my-url', true ) ) {
             $content .= '<a href="'.get_post_meta( get_the_ID(), 'my-url', true ).'">URL TEXT HERE</a>'
          }
      
          return $content;
      }
      add_filter( 'the_content', 'my_page_add_to_content' );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-18
        • 1970-01-01
        • 2018-03-24
        • 1970-01-01
        • 2018-12-11
        • 2012-02-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多