Peer Categories

描述

This plugin provides a template tag which acts a modified version of WordPress’s built-in template tag, the_category(). the_category() lists all categories directly assigned to the specified post. c2c_peer_categories() lists those categories PLUS any categories that are peer to those categories and MINUS categories that are parents to other assigned categories. Peer categories are categories that all share the same category parent.

For example, assume your category structure is hierarchical and looks like this:

Vegetables
|-- Leafy
|   |-- Broccoli
|   |-- Bok Choy
|   |-- Celery
|-- Fruiting
|   |-- Bell Pepper
|   |-- Cucumber
|   |-- Pumpkin
|-- Podded
|   |-- Chickpea
|   |-- Lentil
|   |-- Soybean

If you directly assigned the categories “Fruiting” and “Pumpkin” to a post, peer_categories() would return a list that consists of: “Bell Pepper”, “Cucumber”, and “Pumpkin”. Notice that since “Fruiting” was a parent to a directly assigned category, it and its peers are not included in the list. If only “Fruiting” were selected as a category, then “Leafy”, “Fruiting”, and “Podded” would have been listed.

By default, categories are listed as an HTML list. The first argument to the template tag allows you to define a custom separator, e.g. to have a simple comma-separated list of peer categories: <?php c2c_peer_categories(','); ?>.

As with categories listed via the_category(), categories that are listed are presented as links to the respective category’s archive page.

Example usage (based on preceding example):

  • <?php c2c_peer_categories(); ?>

Outputs something like:

<ul><li><a href="https://example.com/category/fruiting/bell-pepper">Bell Pepper</a></li>
<li><a href="https://example.com/category/fruiting/cucumber">Cucumber</a></li>
<li><a href="https://example.com/category/fruiting/pumpkin">Pumpkin</a></li></ul>
  • <?php c2c_peer_categories( ',' ); ?></ul>

Outputs something like:

<a href="https://example.com/category/fruiting/bell-pepper">Bell Pepper</a>, <a href="https://example.com/category/fruiting/cucumber">Cucumber</a>, <a href="https://example.com/category/fruiting/pumpkin">Pumpkin</a>

Links: Plugin Homepage | Plugin Directory Page | GitHub | Author Homepage

Developer Documentation

Developer documentation can be found in DEVELOPER-DOCS.md. That documentation covers the template tags and hooks provided by the plugin.

As an overview, these are the template tags provided by the plugin:

  • c2c_peer_categories() : Outputs the peer categories.
  • c2c_get_peer_categories_list() : Returns the list of peer categories.
  • c2c_get_peer_categories() : Returns the list of peer categories for the specified post.

These are the hooks provided by the plugin:

  • c2c_peer_categories (action), c2c_get_peer_categories_list, c2c_get_peer_categories (filters) :
    Allows for an alternative approach to safely invoke each of the identically named functions in such a way that if the plugin were deactivated or deleted, then your calls to the functions won’t cause errors on your site.
  • c2c_peer_categories_list (filter) :
    Customizes the return value of the c2c_peer_categories_list() function.
  • c2c_get_peer_categories_omit_ancestors (filter) :
    Customizes the function argument indicating if ancestor categories of all directly assigned categories (even if directly assigned themselves) should be omitted from the return list of categories.

安装

  1. Install via the built-in WordPress plugin installer. Or install the plugin code inside the plugins directory for your site (typically /wp-content/plugins/).
  2. Activate the plugin through the ‘Plugins’ admin menu in WordPress
  3. Optional: Add filters for ‘c2c_peer_categories_list’ to filter peer category listing
  4. Use the template tag <?php c2c_peer_categories(); ?> in a theme template somewhere inside “the loop”

常见问题

Why isn’t an assigned category for the post showing up in the ‘c2c_peer_categories()’ listing?

If an assigned category is the parent for one or more other assigned categories for the post, then the category parent is not included in the listing. Only peers to the lowest-level assigned categories are considered.

Does this plugin include unit tests?

Yes.

评价

此插件暂无评价。

贡献者及开发者

“Peer Categories” 是开源软件。 以下人员对此插件做出了贡献。

贡献者

将“Peer Categories”翻译成您的语言。

对开发感兴趣吗?

您可以浏览代码,查看SVN仓库,或通过RSS订阅开发日志

更新日志

2.2.1 (2023-05-20)

  • Change: Note compatibility through WP 6.3+
  • Change: Update copyright date (2023)

2.2 (2021-10-23)

Highlights:

This minor release removes support for long-deprecated functions (peer_categories(), get_peer_categories_list(), get_peer_categories()), adds DEVELOPER-DOCS.md, notes compatibility through WP 5.8+, and minor reorganization and tweaks to unit tests.

Details:

  • Change: Remove long-deprecated functions peer_categories(), get_peer_categories_list(), and get_peer_categories()
  • New: Add DEVELOPER-DOCS.md and move template tag and hooks documentation into it
  • Change: Tweak installation instruction
  • Change: Note compatibility through WP 5.8+
  • Change: Pare down tags in readme.txt header
  • Unit tests:
    • Change: Restructure unit test directories
      • Change: Move phpunit/ into tests/phpunit/
      • Change: Move phpunit/bin/ into tests/
    • Change: Remove ‘test-‘ prefix from unit test file
    • Change: In bootstrap, store path to plugin file constant
    • Change: In bootstrap, add backcompat for PHPUnit pre-v6.0

2.1.5 (2021-04-17)

  • Change: Note compatibility through WP 5.7+
  • Change: Update copyright date (2021)

Full changelog is available in CHANGELOG.md.