mindkomm / theme-lib-onepager
WordPress主题的OnePager功能
v1.0.2
2024-09-18 14:19 UTC
Requires
- php: ^7.0 || ^8.0
- mindkomm/theme-lib-links: ^1.0 || ^2.0 || dev-main
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_parent
为0
的页面。就目前状态而言,这对我们来说工作得很好。将来,我们可能会添加更多控制。
缓存
通常,缓存插件在页面编辑并保存时刷新页面的缓存。但是,当保存属于OnePager的子页面时,父页面定义了缓存。此库将处理以下插件的父页面清除
- WP Rocket
- WP Fastest Cache
- W3 Total Cache
支持
这是一个我们在MIND开发WordPress主题时使用的库。您可以自由使用它,但目前正在提供任何支持。