diff --git src/bp-groups/bp-groups-template.php src/bp-groups/bp-groups-template.php
index d0be0cc70..2b3fe0475 100644
--- src/bp-groups/bp-groups-template.php
+++ src/bp-groups/bp-groups-template.php
@@ -190,7 +190,26 @@ function bp_group_type_directory_link( $group_type = '' ) {
return '';
}
- return sprintf( '%s', esc_url( bp_get_group_type_directory_permalink( $group_type ) ), bp_groups_get_group_type_object( $group_type )->labels['name'] );
+ $group_type_object = bp_groups_get_group_type_object( $group_type );
+
+ if ( ! isset( $group_type_object->labels['name'] ) ) {
+ return '';
+ }
+
+ $group_type_text = $group_type_object->labels['name'];
+ if ( isset( $group_type_object->labels['singular_name'] ) && $group_type_object->labels['singular_name'] ) {
+ $group_type_text = $group_type_object->labels['singular_name'];
+ }
+
+ if ( empty( $group_type_object->has_directory ) ) {
+ return esc_html( $group_type_text );
+ }
+
+ return sprintf(
+ '%s',
+ esc_url( bp_get_group_type_directory_permalink( $group_type ) ),
+ esc_html( $group_type_text )
+ );
}
/**
@@ -206,19 +225,23 @@ function bp_group_type_list( $group_id = 0, $r = array() ) {
* Return a comma-delimited list of group types.
*
* @since 2.7.0
+ * @since 7.0.0 The `$r['label']` arguments now also accept an array containing the
+ * plural & singular labels to use according to the Group's number of
+ * group types it assigned to.
*
* @param int $group_id Group ID. Defaults to current group ID if on a group page.
* @param array|string $r {
* Array of parameters. All items are optional.
- * @type string $parent_element Element to wrap around the list. Defaults to 'p'.
- * @type array $parent_attr Element attributes for parent element. Defaults to
- * array( 'class' => 'bp-group-type-list' ).
- * @type string $label Label to add before the list. Defaults to 'Group Types:'.
- * @type string $label_element Element to wrap around the label. Defaults to 'strong'.
- * @type array $label_attr Element attributes for label element. Defaults to array().
- * @type bool $show_all Whether to show all registered group types. Defaults to 'false'. If
- * 'false', only shows group types with the 'show_in_list' parameter set to
- * true. See bp_groups_register_group_type() for more info.
+ * @type string $parent_element Element to wrap around the list. Defaults to 'p'.
+ * @type array $parent_attr Element attributes for parent element. Defaults to
+ * array( 'class' => 'bp-group-type-list' ).
+ * @type string|array $label Plural and singular labels to add before the list. Defaults to
+ * array( 'plural' => 'Group Types:', 'singular' => 'Group Type:' ).
+ * @type string $label_element Element to wrap around the label. Defaults to 'strong'.
+ * @type array $label_attr Element attributes for label element. Defaults to array().
+ * @type bool $show_all Whether to show all registered group types. Defaults to 'false'. If
+ * 'false', only shows group types with the 'show_in_list' parameter set to
+ * true. See bp_groups_register_group_type() for more info.
* }
* @return string
*/
@@ -234,7 +257,7 @@ function bp_group_type_list( $group_id = 0, $r = array() ) {
'parent_attr' => array(
'class' => 'bp-group-type-list',
),
- 'label' => __( 'Group Types:', 'buddypress' ),
+ 'label' => array(),
'label_element' => 'strong',
'label_attr' => array(),
'show_all' => false,
@@ -244,6 +267,24 @@ function bp_group_type_list( $group_id = 0, $r = array() ) {
'group_type_list'
);
+ // Should the label be output?
+ $has_label = ! empty( $r['label'] );
+
+ // Ensure Backcompatibilty in case devalopers are still using a string.
+ if ( ! is_array( $r['label'] ) ) {
+ $r['label'] = array(
+ 'plural' => __( 'Group Types:', 'buddypress' ),
+ );
+ }
+
+ $labels = wp_parse_args(
+ $r['label'],
+ array(
+ 'plural' => __( 'Group Types:', 'buddypress' ),
+ 'singular' => __( 'Group Type:', 'buddypress' ),
+ )
+ );
+
$retval = '';
if ( $types = bp_groups_get_group_type( $group_id, false ) ) {
@@ -256,12 +297,19 @@ function bp_group_type_list( $group_id = 0, $r = array() ) {
}
$before = $after = $label = '';
+ $count = count( $types );
+
+ if ( 1 === $count ) {
+ $label_text = $labels['singular'];
+ } else {
+ $label_text = $labels['plural'];
+ }
// Render parent element.
if ( ! empty( $r['parent_element'] ) ) {
$parent_elem = new BP_Core_HTML_Element( array(
'element' => $r['parent_element'],
- 'attr' => $r['parent_attr']
+ 'attr' => $r['parent_attr'],
) );
// Set before and after.
@@ -274,13 +322,13 @@ function bp_group_type_list( $group_id = 0, $r = array() ) {
$label = new BP_Core_HTML_Element( array(
'element' => $r['label_element'],
'attr' => $r['label_attr'],
- 'inner_html' => esc_html( $r['label'] )
+ 'inner_html' => esc_html( $label_text ),
) );
$label = $label->contents() . ' ';
// No element, just the label.
- } else {
- $label = esc_html( $r['label'] );
+ } elseif ( $has_label ) {
+ $label = esc_html( $label_text );
}
// The list of types.
diff --git src/bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php src/bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php
index 07439f2f8..df18e2119 100644
--- src/bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php
+++ src/bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php
@@ -46,7 +46,10 @@
bp_group_type_list(
bp_get_group_id(),
array(
- 'label' => __( 'Group Types', 'buddypress' ),
+ 'label' => array(
+ 'plural' => __( 'Group Types', 'buddypress' ),
+ 'singular' => __( 'Group Type', 'buddypress' ),
+ ),
'list_element' => 'span',
)
);
diff --git src/bp-templates/bp-nouveau/buddypress/groups/single/group-header.php src/bp-templates/bp-nouveau/buddypress/groups/single/group-header.php
index 92c18c48d..ffa9f447f 100644
--- src/bp-templates/bp-nouveau/buddypress/groups/single/group-header.php
+++ src/bp-templates/bp-nouveau/buddypress/groups/single/group-header.php
@@ -43,7 +43,10 @@
bp_group_type_list(
bp_get_group_id(),
array(
- 'label' => __( 'Group Types', 'buddypress' ),
+ 'label' => array(
+ 'plural' => __( 'Group Types', 'buddypress' ),
+ 'singular' => __( 'Group Type', 'buddypress' ),
+ ),
'list_element' => 'span',
)
);