Skip to:
Content

bbPress.org


Ignore:
Timestamp:
07/02/2024 04:11:29 PM (2 years ago)
Author:
johnjamesjacoby
Message:

Posts: strip "Protected/Private" for bbPress post types

This change prevents post title hints from being prepended to titles of Forums, Topics, or Replies, which was happening as a consequence of calling get_the_title() which assumes every protected/private post title needs it.

It does this by including the following code changes:

  • introduce the bbp_no_title_status_hints() filter function, which hooks into 2 WordPress filters and maybe overrides the return value
  • replace a few get_the_title() calls with get_post_field( 'post_title' ) to bypass the above filters when they would never be desirable

Committer note: this could be considered a small back-compat break (because it alters long-standing theme-side output) but ultimately it is a design decision to output all of the forum content as it was saved by the community members. Forums that prefer the old behavior can unhook bbp_no_title_status_hints and continue to customize child template parts to insert custom forum status hints.

Fixes #3602.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/common/template.php

    r7231 r7276  
    28452845    return apply_filters( 'bbp_title', $new_title, $sep, $seplocation );
    28462846}
     2847
     2848/**
     2849 * Removes Protected/Private post title hints.
     2850 *
     2851 * This function is hooked to 2 WordPress filters that are responsible for
     2852 * prepending hints to the beginning of Protected & Private post titles.
     2853 *
     2854 * These hints are a bit unsightly when used in functions like
     2855 * bbp_get_breadcrumb(), so we strip them back out for bbPress post types.
     2856 *
     2857 * @since 2.7.0
     2858 *
     2859 * @param string      $prepend Text displayed before a post title.
     2860 * @param int|WP_Post $post    Current post object.
     2861 *
     2862 * @return string
     2863 */
     2864function bbp_no_title_status_hints( $prepend = '', $post = 0 ) {
     2865
     2866    // Bail if empty
     2867    if ( empty( $prepend ) || empty( $post ) ) {
     2868        return $prepend;
     2869    }
     2870
     2871    // Get post type
     2872    $post_type = get_post_type( $post );
     2873
     2874    // Maybe override return value
     2875    $retval = in_array( $post_type, bbp_get_post_types(), true )
     2876        ? '%s'
     2877        : $prepend;
     2878
     2879    // Filter & return
     2880    return (string) apply_filters( 'bbp_no_special_title_formatting', $retval, $prepend, $post );
     2881}
Note: See TracChangeset for help on using the changeset viewer.