Linux 软件免费装

Alphabetical Pagination

开发者 mansoormunib
更新时间 2026年6月9日 11:39
PHP版本: 8.1 及以上
WordPress版本: 7.0
版权: GPLv2 or later
版权网址: 版权信息

标签

navigation alphabetical pagination glossary index

下载

2.4.0 2.4.1 2.4.2

详情介绍:

Alphabetical Pagination (formerly WP-SNAP Extended!) builds an alphabetical index of post titles across any public post type. Visitors jump straight to a letter (A, B, C …), browse a paginated list of matching posts, and click through to each post's permalink. Built for modern WordPress: PHP 8.1+ typed classes, schema-validated options, prepared SQL throughout, semantic markup, no jQuery dependency, no bundled CSS framework, zero front-end JS by default. Why use it 2.3.0 feature surface Backwards compatibility

安装:

  1. Upload the wp-snap-extended directory to /wp-content/plugins/.
  2. Activate the plugin through the Plugins screen in WordPress.
  3. Visit Settings → Alphabetical Pagination to configure the menu style, alphabet pack, pagination limit, WooCommerce mount, content fallback, REST API, and other options.
  4. Embed the index in any post or page with the Gutenberg block, the shortcode, or the template tag from your theme.

常见问题:

Does the plugin still work if I'm calling wp_snap() from my theme?

Yes. wp_snap() is kept as a thin alias for alphabetical_pagination() with the same parameter list, so existing themes continue to work unchanged.

I need to embed the index inside a Gutenberg page.

Use the native Alphabetical Pagination block (added in 2.3.0) from the block inserter under the Widgets category — it's fully server-rendered and supports wide / full alignment. The block sidebar exposes post type, menu style, firstload, category, taxonomy + term, and display attributes. The legacy approach (Shortcode block with [alphabetical_pagination]) still works.

Does it integrate with WooCommerce?

Yes. Enable Settings → Alphabetical Pagination → WooCommerce → Auto-mount on Shop and the index renders above the WooCommerce shop loop and product category archives automatically. The mount uses native WooCommerce action hooks (woocommerce_before_shop_loop, woocommerce_archive_description, or woocommerce_before_main_content — pick from the dropdown) so it never collides with caching / SEO / multilingual plugins that filter WP_Query.

Is it WPML / Polylang compatible?

Yes. The transient letter-availability cache keys on the current language (via wpml_current_language filter or pll_current_language() function), and WP_Query runs with suppress_filters => false, so translated post sets are filtered and cached per-language automatically. Switching language busts the cache for that language only.

Can I get the data over REST for a headless front end?

Yes. Two read-only public endpoints under /wp-json/wp-snap-ext/v1/: GET /letters returns [{ letter, count, href }], GET /posts returns paginated post payloads filtered by letter. Toggle on / off under Settings → Alphabetical Pagination → REST API & Cache.

How do I display the ACF field instead of the trimmed post content?

Go to Settings → Alphabetical Pagination → Content Fallback, enable ACF Excerpt Fallback, and enter the ACF Field Name (e.g. summary). The plugin tries get_field() first, then get_sub_field(), then walks the entire get_fields() tree recursively to find the field even when it lives inside an ACF flexible-content layout, repeater row, or group. Falls back to a trimmed extract of the post content if ACF returns nothing.

My theme has no obvious hook to drop the index into.

Enable Settings → Alphabetical Pagination → DOM Injection → Enable DOM Injection and provide a CSS selector (e.g. .entry-content, #primary > article:first-child). The plugin renders the index into a hidden <template> element in the footer and a ~300-byte vanilla-JS snippet moves it into the matched element on DOMContentLoaded. No jQuery, no dependencies.

How do I sort posts by a custom field instead of the title?

Under Settings → Alphabetical Pagination → Sorting, set Meta Key to your post meta key and Meta Order to ASC or DESC. The letter buckets still derive from post_title, but the order of posts within each bucket follows the meta value. Useful for sorting glossary terms by importance, products by SKU, etc.

Can I use a non-Latin alphabet (Arabic, Chinese pinyin, Cyrillic, Greek, Hebrew, Hindi, Korean, Thai, …)?

Yes. Pick the script from Settings → Alphabetical Pagination → Language → Alphabet Pack. 15 packs are bundled: English, Arabic, Chinese (Pinyin A–Z), German (with Umlauts), Spanish (with Ñ), French, Greek, Hebrew, Hindi (Devanagari), Hungarian, Korean (Hangul Jamo), Russian (Cyrillic), Thai, Turkish, Urdu. Selecting a pack overwrites the freeform Local Alphabet field on save. You can also type a fully custom alphabet directly.

Are the letter counts cached?

Yes. Letter availability is stored as a transient keyed by post_type / taxonomy / term / current language / alphabet pack / menumisc setting. Default TTL is 1 hour (configurable under REST API & Cache → Cache TTL). The cache is invalidated automatically on save_post, deleted_post, trashed_post, untrashed_post, and switch_blog — so editing a post immediately reflects in the index.

Can I customise the output without editing the plugin?

Yes — every render path fires hooks (added in 2.3.0):

  • wp_snap_ext/before_render, wp_snap_ext/after_render — actions.
  • wp_snap_ext/pre_render — short-circuit filter (return a string to replace the HTML).
  • wp_snap_ext/query_args — mutate WP_Query args before the query runs.
  • wp_snap_ext/letter_href — rewrite letter link hrefs (useful for SPA routers).
  • wp_snap_ext/excerpt — post-process the resolved excerpt.
  • wp_snap_ext/render — final filter on the rendered HTML.
See the Developer hooks section above for code samples.

Why are pagination URLs using ?alpha_paged= instead of ?paged=?

So they don't collide with WordPress's own paged query variable on category, tag, or archive templates. You can paginate the alphabetical list independently of the surrounding archive.

Is the plugin accessible (WCAG)?

Yes — the markup targets WCAG 2.1 AA. The letter navigation is wrapped in a semantic <nav aria-label="Alphabetical Navigation">, the active letter carries aria-current="page", empty letters carry aria-disabled="true", every link has a descriptive aria-label, and the stylesheet provides visible :focus-visible outlines. Explicit role="list" / role="listitem" are emitted because Safari + VoiceOver strip the implicit list role when list-style:none is applied.

更新日志:

2.4.2 2.4.1 2.4.0 2.3.0 2.2.0 2.1.0 2.0.0 1.0.0