Description
This plugin provides a template tag which acts as a modified version of WordPress’s built-in template tag, the_category()
. the_category()
lists all categories directly assigned to the specified post. c2c_parentless_categories()
lists those categories, except for categories that are parents to other assigned categories.
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” , “ Cucumber” , and “ Pumpkin” to a post, c2c_parentless_categories()
would return a list that consists of: “ Cucumber” , and “ Pumpkin” . Notice that since “ Fruiting” was a parent to a directly assigned category, it is not included in the list.
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 categories: <?php c2c_parentless_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_parentless_categories(); ?>
Outputs something like:
<ul><li><a href="http://yourblog.com/category/fruiting/cucumber">Cucumber</a></li>
<li><a href="http://yourblog.com/category/fruiting/pumpkin">Pumpkin</a></li></ul>
<?php c2c_parentless_categories( ',' ); ?></ul>
Outputs something like:
<a href="http://yourblog.com/category/fruiting/cucumber">Cucumber</a>, <a href="http://yourblog.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_parentless_categories()
: Outputs the parentless categories.c2c_get_parentless_categories_list()
: Returns the list of parentless categories.c2c_get_parentless_categories()
: Returns the list of parentless categories for the specified post.
These are the hooks provided by the plugin:
c2c_parentless_categories
(action),c2c_get_parentless_categories_list
,c2c_get_parentless_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_parentless_categories_list
(filter) :
Customizes the return value of thec2c_parentless_categories_list()
function.c2c_get_parentless_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.
Installation
- Install via the built-in WordPress plugin installer. Or install the plugin code inside the plugins directory for your site (typically
/wp-content/plugins/
). - Activate the plugin through the ‘Plugins’ admin menu in WordPress
- Optional: Add filters for ‘c2c_parentless_categories_list’ to filter parentless category listing
- Use the template tag
<?php c2c_parentless_categories(); ?>
in a theme template somewhere inside “ the loop”
FAQ
-
Why isn’t an assigned category for the post showing up in the `c2c_parentless_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.
-
Does this plugin include unit tests?
-
Yes. The tests are not packaged in the release .zip file or included in plugins.svn.wordpress.org, but can be found in the plugin’s GitHub repository.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Parentless Categories” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Parentless Categories” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.3 (2024-08-28)
Highlights:
This minor release prevents translations from containing unintended markup, notes compatibility through WP 6.6+, removes unit tests from release packaging, and updates copyright date (2024).
Details:
- Change: Prevent translations from containing unintended markup
- Change: Add missing inline comment for translators
- Change: Note compatibility through WP 6.6+
- Change: Update copyright date (2024)
- Change: Remove development and testing-related files from release packaging
- New: Add
.gitignore
file - Unit tests:
- Allow tests to run against current versions of WordPress
- New: Add
composer.json
for PHPUnit Polyfill dependency - Hardening: Prevent direct web access to
bootstrap.php
- Change: In bootstrap, store path to plugin directory in a constant
- New: Add tests for
c2c_parentless_categories()
- New: Add tests for function invocation filters
- Change: Tweak some inline comment formatting
2.2.1 (2023-05-20)
- Change: Note compatibility through WP 6.3+
- Change: Update copyright date (2023)
2.2 (2021-10-22)
Highlights:
This minor release removes support for long-deprecated functions (parentless_categories()
, get_parentless_categories_list()
, get_parentless_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
parentless_categories()
,get_parentless_categories_list()
, andget_parentless_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+
- Unit tests:
- Change: Restructure unit test directories
- Change: Move
phpunit/
intotests/phpunit/
- Change: Move
phpunit/bin/
intotests/
- Change: Move
- 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
- Change: Restructure unit test directories
Full changelog is available in CHANGELOG.md.