Skip to:
Content

bbPress.org

Opened 3 years ago

Last modified 22 hours ago

#3436 new defect (bug)

register_meta() calls should use 'object_subtype' argument

Reported by: r-a-y's profile r-a-y Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version: 2.6.0
Component: API Keywords: has-patch
Cc:

Description

bbPress registers various meta keys, but doesn't set the 'object_subtype' argument:
https://bbpress.trac.wordpress.org/browser/branches/2.6/src/bbpress.php?marks=778-787#L768

Currently, this means any post that is published will receive the following meta keys regardless of bbPress post type:

  • _bbp_topic_count
  • _bbp_reply_count
  • _bbp_total_topic_count
  • _bbp_total_reply_count
  • _bbp_voice_count
  • _bbp_anonymous_reply_count
  • _bbp_topic_count_hidden
  • _bbp_reply_count_hidden
  • _bbp_forum_subforum_count

I've attached a patch that only registers meta keys for the correct bbPress forum and topic post types.

Attachments (2)

3436.01.patch (1.3 KB) - added by r-a-y 3 years ago.
3436.02.patch (1.7 KB) - added by r-a-y 3 years ago.

Download all attachments as: .zip

Change History (6)

@r-a-y
3 years ago

#1 @r-a-y
3 years ago

Could also use register_post_meta() in place of register_meta() instead.

Ignore 01.patch, use 02.patch.

Last edited 3 years ago by r-a-y (previous) (diff)

@r-a-y
3 years ago

#2 @hasanuzzamanshamim
2 years ago

  • Keywords has-patch added

#3 @r-a-y
4 months ago

#3588 was marked as a duplicate.

#4 @sluglolo33
22 hours ago

Absolutely! When registering custom metadata in WordPress using the register_meta() function, it's recommended to use the 'object_subtype' argument, especially when working with post types, taxonomies, or any other object types that support subtypes.

Here's an example of how you can use it:

<?php
register_meta(
    'post',
    'custom_meta_key',
    array(
        'object_subtype' => 'post',
        'type'           => 'string',
        'description'    => 'Custom metadata description',
        'single'         => true,
        'show_in_rest'   => true,
    )
);


In this example, 'object_subtype' is set to 'post', which means this custom metadata applies specifically to posts. If you're working with custom post types or taxonomies, you would adjust this accordingly.

Using 'object_subtype' helps ensure that your custom metadata is applied only to the intended objects, which is particularly useful in scenarios where you have multiple post types or taxonomies sharing the same metadata keys. It helps avoid conflicts and ensures better organization of your data.

Last edited 22 hours ago by sluglolo33 (previous) (diff)
Note: See TracTickets for help on using tickets.