BuddyPress интересный и мощный комплекс по организации на сайте сообщества пользователей. Но как и в любой системе встречаются проблемы и недочеты. Разберем некоторые из них.
В списке Пользователи выводятся не все
Это может происходить из-за того что у пользователей в таблице wp_bp_activity отсутствует запись last_activity с датой последнего посещения. У меня это произошло после использования инструментов buddypress (всех разом). А задумано это для того чтобы пользователи появлялись в списке после фактической активации т.е. когда они зашли на сайт.
Активировать массово всех пользователей можно либо плагином (создать папку и файл php с названием bp-activate-users):
<?php
/*
Plugin Name: BP Activate Users
Description: Плагин активирует всех пользователей BuddyPress.
Version: 1.0
Author: Opttour
Author URI: https://opttour.ru/
Plugin URI:
*/
if ( ! defined( 'ABSPATH' ) ) { exit; }
register_activation_hook(__FILE__, 'add_users_to_bp');
function add_users_to_bp() {
$users = get_users();
foreach ($users as $user) {
$time = '2021-06-25 16:48:07';
bp_update_user_last_activity( $user->ID, $time );
}
}
Либо функцией:
add_action('init', 'add_users_to_bp');
function add_users_to_bp() {
$users = get_users();
foreach ($users as $user) {
$time = '2021-06-25 16:48:07';
bp_update_user_last_activity( $user->ID, $time );
}
}
При этом может нарушится показатель общего количества пользователей. Исправить это можно в таблице wp_options строка _transient_bp_active_member_count.
an error occurred while processing the directive
Непонятно почему выводятся подобные ошибки во вкладке Медиа (плагин rtMedia). Скрыть их стилями довольно проблематично т.к. выводятся они без тегов.
Можно скрыть их скриптом:
var replaced = $("body").html().replace('[an error occurred while processing the directive]',' ');
$("body").html(replaced);
Но при этом в Firefox сайт тормозится и мигают изображения.
Альтернативный вариант, но когда уведомление не одно нужно несколько скриптов подряд прописывать:
var replaced = $("#post-content").html().replace('[an error occurred while processing the directive]',' ');
$("#post-content").html(replaced);
var replaced = $("#post-content").html().replace('[an error occurred while processing the directive]',' ');
$("#post-content").html(replaced);
[site-socialshare]