You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
3.7 KiB
PHTML
174 lines
3.7 KiB
PHTML
8 months ago
|
<?php
|
||
|
/**
|
||
|
* The BuddyPress Module.
|
||
|
*
|
||
|
* @since 1.0.32
|
||
|
* @package RankMath
|
||
|
* @subpackage RankMath\BuddyPress
|
||
|
* @author Rank Math <support@rankmath.com>
|
||
|
*/
|
||
|
|
||
|
namespace RankMath\BuddyPress;
|
||
|
|
||
|
use RankMath\Traits\Hooker;
|
||
|
|
||
|
defined( 'ABSPATH' ) || exit;
|
||
|
|
||
|
/**
|
||
|
* BuddyPress class.
|
||
|
*/
|
||
|
class BuddyPress {
|
||
|
|
||
|
use Hooker;
|
||
|
|
||
|
/**
|
||
|
* The Constructor.
|
||
|
*/
|
||
|
public function __construct() {
|
||
|
if ( is_admin() ) {
|
||
|
new Admin();
|
||
|
}
|
||
|
|
||
|
$this->filter( 'rank_math/paper/hash', 'paper' );
|
||
|
$this->action( 'rank_math/vars/register_extra_replacements', 'register_replacements' );
|
||
|
$this->filter( 'rank_math/json_ld', 'json_ld', 11 );
|
||
|
$this->filter( 'rank_math/frontend/title', 'change_activate_title' );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Filter to change the Activate page title.
|
||
|
*
|
||
|
* @param string $title Page title.
|
||
|
*/
|
||
|
public function change_activate_title( $title ) {
|
||
|
if ( function_exists( 'bp_is_current_component' ) && bp_is_current_component( 'activate' ) ) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
return $title;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Add BuddyPress class.
|
||
|
*
|
||
|
* @param array $hash Paper Hash.
|
||
|
*/
|
||
|
public function paper( $hash ) {
|
||
|
$bp_data = [
|
||
|
'BP_User' => bp_is_user(),
|
||
|
'BP_Group' => ! is_singular() && bp_is_groups_component(),
|
||
|
];
|
||
|
|
||
|
return array_merge( $bp_data, $hash );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Collect data to output in JSON-LD.
|
||
|
*
|
||
|
* @param array $data An array of data to output in JSON-LD.
|
||
|
*/
|
||
|
public function json_ld( $data ) {
|
||
|
if ( ! bp_is_user() ) {
|
||
|
return $data;
|
||
|
}
|
||
|
|
||
|
if ( isset( $data['richSnippet'] ) ) {
|
||
|
unset( $data['richSnippet'] );
|
||
|
}
|
||
|
|
||
|
$user_id = bp_displayed_user_id();
|
||
|
|
||
|
$data['ProfilePage'] = [
|
||
|
'@type' => 'ProfilePage',
|
||
|
'@id' => get_author_posts_url( $user_id ),
|
||
|
'headline' => sprintf( 'About %s', get_the_author_meta( 'display_name', $user_id ) ),
|
||
|
'about' => [
|
||
|
'@type' => 'Person',
|
||
|
'name' => get_the_author_meta( 'display_name', $user_id ),
|
||
|
'url' => esc_url( bp_core_get_user_domain( $user_id ) ),
|
||
|
'description' => get_the_author_meta( 'description', $user_id ),
|
||
|
'image' => [
|
||
|
'@type' => 'ImageObject',
|
||
|
'url' => get_avatar_url( $user_id, 96 ),
|
||
|
'height' => 96,
|
||
|
'width' => 96,
|
||
|
],
|
||
|
],
|
||
|
];
|
||
|
return $data;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Register variable replacements for BuddyPress groups.
|
||
|
*/
|
||
|
public function register_replacements() {
|
||
|
rank_math_register_var_replacement(
|
||
|
'group_name',
|
||
|
[
|
||
|
'name' => esc_html__( 'Group name.', 'rank-math' ),
|
||
|
'description' => esc_html__( 'Group name of the current group', 'rank-math' ),
|
||
|
'variable' => 'group_name',
|
||
|
'example' => $this->get_group_name(),
|
||
|
],
|
||
|
[ $this, 'get_group_name' ]
|
||
|
);
|
||
|
|
||
|
rank_math_register_var_replacement(
|
||
|
'group_desc',
|
||
|
[
|
||
|
'name' => esc_html__( 'Group Description.', 'rank-math' ),
|
||
|
'description' => esc_html__( 'Group description of the current group', 'rank-math' ),
|
||
|
'variable' => 'group_desc',
|
||
|
'example' => $this->get_group_desc(),
|
||
|
],
|
||
|
[ $this, 'get_group_desc' ]
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retrieves the group name.
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function get_group_name() {
|
||
|
$group = $this->get_group();
|
||
|
if ( ! is_object( $group ) ) {
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
return $group->name;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retrieves the group description.
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function get_group_desc() {
|
||
|
$group = $this->get_group();
|
||
|
if ( ! is_object( $group ) ) {
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
return $group->description;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the group object when the current page is the group page.
|
||
|
*
|
||
|
* @return null|Object
|
||
|
*/
|
||
|
private function get_group() {
|
||
|
if ( ! function_exists( 'groups_get_current_group' ) ) {
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
$group = groups_get_current_group();
|
||
|
if ( ! is_object( $group ) ) {
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
return $group;
|
||
|
}
|
||
|
}
|