mindkomm/theme-lib-onepager

WordPress主题的OnePager功能

v1.0.2 2024-09-18 14:19 UTC

This package is auto-updated.

Last update: 2024-09-18 14:19:30 UTC


README

WordPress主题的OnePager功能。

重写子页面的URL为锚点链接。用#前缀替换URL的最后一部分,并删除尾部斜杠。例如 /hotel/host/ > /hotel/#host

您可以在将子页面附加到父页面时使用此功能,例如OnePager,或者当您想在一个OnePager中列出所有页面时。

安装

您可以通过Composer安装此软件包

composer require mindkomm/theme-lib-onepager

使用方法

functions.php

$onepager = new Theme\Onepager\Onepager();
$onepager->init();

Onepager构造函数接受两个参数

$type

定义您想要使用的OnePager类型。默认为multi

  • multi – 嵌套主题结构,其中子页面附加到父站点。
  • simple – 非嵌套结构,其中所有页面依次显示为OnePager。

$post_types

应用Onepager功能的文章类型。默认为[ 'page' ]

忽略页面

在某些配置中,您可能有不属于OnePager的子页面。例如,在WooCommerce中,结账页面是商店页面的子页面。过滤结账页面的链接将破坏结账页面的功能。

theme/onepager/apply_link_filter过滤器允许您禁用某些链接的过滤。以下是一个已包含在库中的示例

/**
 * Do not apply Onepager link filtering for WooCommerce pages.
 *
 * @param bool   $bailout Whether to bail out early.
 * @param string $link    The link to filter.
 * @param string $post_id The ID of the post to filter the link for.
 *
 * @return bool
 */
add_filter( 'theme/onepager/apply_link_filter', function( $bailout, $link, $post_id ) {
    if ( wc_get_page_id( 'shop' ) === $post_id || wc_get_page_id( 'checkout' ) === $post_id ) {
        return true;
    }
    
    return $bailout;
}, 10, 3 );

网站地图

当您安装了Yoast SEO时,此库将确保在生成页面网站地图时忽略子页面。这不会考虑忽略某些页面的过滤器。它仅包括设置post_parent0的页面。就目前状态而言,这对我们来说工作得很好。将来,我们可能会添加更多控制。

缓存

通常,缓存插件在页面编辑并保存时刷新页面的缓存。但是,当保存属于OnePager的子页面时,父页面定义了缓存。此库将处理以下插件的父页面清除

  • WP Rocket
  • WP Fastest Cache
  • W3 Total Cache

支持

这是一个我们在MIND开发WordPress主题时使用的库。您可以自由使用它,但目前正在提供任何支持。