@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix content: <http://purl.org/rss/1.0/modules/content/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<https://lhero.org/?post_type=lh-portfolio&#038;p=152900>
  a sioc:Post ;
  dc:title "LH Shadow Taxonomies" ;
  dcterms:identifier 152900 ;
  dc:modified "2026-10-31T12:41:40Z"^^xsd:dateTime ;
  dc:created "2026-10-31T12:41:39Z"^^xsd:dateTime ;
  sioc:link <https://lhero.org/portfolio/lh-shadow-taxonomies/> ;
  sioc:has_creator <https://lhero.org/author/1/#account> ;
  sioc:has_container <https://lhero.org/#posts> ;
  content:encoded "<ul class=\"lh_portfolio-meta\"><li><strong>Type:</strong> Plugin</li><li><strong>Lifecycle Stage:</strong> Active</li></ul><p class=\"wp-block-paragraph\">LH Shadow Taxonomies lets you relate one kind of WordPress object to another using ordinary taxonomy terms. Register a taxonomy with a <code>shadow</code> argument naming a post type, users or BuddyPress groups, and the plugin keeps one term in that taxonomy for every object of that type: created when the object is created, renamed when it changes and removed when it is deleted. Tagging a post with one of those terms then records a relationship to the underlying user, group or post, using the editor screens, queries and REST routes WordPress already has.</p><p class=\"wp-block-paragraph\">It is a developer library: it registers no taxonomies itself and does nothing until another plugin or theme declares a shadow taxonomy. LH Buddypress Group Tagger is one such plugin.</p><h2 class=\"wp-block-heading\">Features</h2><ul class=\"wp-block-list\"><li>Shadow any post type, WordPress users or BuddyPress groups, declared with a single argument to <code>register_taxonomy()</code>.</li><li>Terms stay in step with their objects: name, slug and description follow the post title, user display name or group name.</li><li>Objects that existed before the taxonomy was registered are backfilled in batches by a daily cron job.</li><li>A Shadow column on the taxonomy&#8217;s admin screen links each term to the user, group or post it stands for.</li><li>Actions fire when objects are shadowed or unshadowed and when shadow terms are assigned to or removed from content, so other plugins can build on the relationships.</li><li>Filters to exclude particular objects, change which post statuses are shadowed and tune the backfill batch size.</li></ul><h2 class=\"wp-block-heading\">Getting started</h2><p class=\"wp-block-paragraph\">Activate the plugin, then register a taxonomy with <code>'shadow' =&gt; 'user'</code> (or <code>'bp_group'</code>, or a post type name) among its arguments, attached to whichever post types should be tagged with it. Existing objects get their terms within a day; new ones get theirs immediately. BuddyPress is only needed for group shadowing.</p><ul class=\"lh_portfolio-doc-toc\"><li><a href=\"https://lhero.org/portfolio/lh-shadow-taxonomies/architecture/\">Architecture</a></li><li><a href=\"https://lhero.org/portfolio/lh-shadow-taxonomies/hooks/\">Hooks</a></li><li><a href=\"https://lhero.org/portfolio/lh-shadow-taxonomies/changelog/\">Changelog</a></li></ul>"^^rdf:XMLLiteral ;
  sioc:content "Type: PluginLifecycle Stage: ActiveLH Shadow Taxonomies lets you relate one kind of WordPress object to another using ordinary taxonomy terms. Register a taxonomy with a shadow argument naming a post type, users or BuddyPress groups, and the plugin keeps one term in that taxonomy for every object of that type: created when the object is created, renamed when it changes and removed when it is deleted. Tagging a post with one of those terms then records a relationship to the underlying user, group or post, using the editor screens, queries and REST routes WordPress already has.It is a developer library: it registers no taxonomies itself and does nothing until another plugin or theme declares a shadow taxonomy. LH Buddypress Group Tagger is one such plugin.FeaturesShadow any post type, WordPress users or BuddyPress groups, declared with a single argument to register_taxonomy().Terms stay in step with their objects: name, slug and description follow the post title, user display name or group name.Objects that existed before the taxonomy was registered are backfilled in batches by a daily cron job.A Shadow column on the taxonomy&#8217;s admin screen links each term to the user, group or post it stands for.Actions fire when objects are shadowed or unshadowed and when shadow terms are assigned to or removed from content, so other plugins can build on the relationships.Filters to exclude particular objects, change which post statuses are shadowed and tune the backfill batch size.Getting startedActivate the plugin, then register a taxonomy with 'shadow' =&gt; 'user' (or 'bp_group', or a post type name) among its arguments, attached to whichever post types should be tagged with it. Existing objects get their terms within a day; new ones get theirs immediately. BuddyPress is only needed for group shadowing.ArchitectureHooksChangelog" ;
  sioc:topic <https://lhero.org/lh_portfolio-type/plugin/>, <https://lhero.org/lh_portfolio-lifecycle-stage/active/>, <https://lhero.org/?taxonomy=lh_portfolio-tags&term=buddypress>, <https://lhero.org/?taxonomy=lh_portfolio-tags&term=developer>, <https://lhero.org/?taxonomy=lh_portfolio-tags&term=terms>, <https://lhero.org/?taxonomy=lh_portfolio-tags&term=taxonomies>, <https://lhero.org/?taxonomy=lh_portfolio-tags&term=relationships>, <https://lhero.org/?taxonomy=author&term=cap-1> .

<https://lhero.org/author/1/#account> rdfs:seeAlso <https://lhero.org/author/1/?feed=lhrdf&format=turtle> .
<https://lhero.org/lh_portfolio-type/plugin/> rdfs:seeAlso <https://lhero.org/lh_portfolio-type/plugin/?feed=lhrdf&format=turtle> .
<https://lhero.org/lh_portfolio-lifecycle-stage/active/> rdfs:seeAlso <https://lhero.org/lh_portfolio-lifecycle-stage/active/?feed=lhrdf&format=turtle> .
<https://lhero.org/?taxonomy=lh_portfolio-tags&term=buddypress> rdfs:seeAlso <https://lhero.org/?taxonomy=lh_portfolio-tags&term=buddypress&feed=lhrdf&format=turtle> .
<https://lhero.org/?taxonomy=lh_portfolio-tags&term=developer> rdfs:seeAlso <https://lhero.org/?taxonomy=lh_portfolio-tags&term=developer&feed=lhrdf&format=turtle> .
<https://lhero.org/?taxonomy=lh_portfolio-tags&term=terms> rdfs:seeAlso <https://lhero.org/?taxonomy=lh_portfolio-tags&term=terms&feed=lhrdf&format=turtle> .
<https://lhero.org/?taxonomy=lh_portfolio-tags&term=taxonomies> rdfs:seeAlso <https://lhero.org/?taxonomy=lh_portfolio-tags&term=taxonomies&feed=lhrdf&format=turtle> .
<https://lhero.org/?taxonomy=lh_portfolio-tags&term=relationships> rdfs:seeAlso <https://lhero.org/?taxonomy=lh_portfolio-tags&term=relationships&feed=lhrdf&format=turtle> .
<https://lhero.org/?taxonomy=author&term=cap-1> rdfs:seeAlso <https://lhero.org/?taxonomy=author&term=cap-1&feed=lhrdf&format=turtle> .
