修改 bbPress 模板

修改 bbPress 模板

bbPress 有许多模板可以改变论坛的显示方式,您可以更改这些模板以完全改变论坛的显示方式。

您会在以下位置找到这些模板

wp-content/plugins/bbpress/templates/default/bbpress/

论坛的索引从使用开始

content-archive-forum.php

如果您打开它,您会看到他们使用函数 bbp_get_template_part 调用了另一个模板

<?php bbp_get_template_part( 'loop', 'forums'); ?>

(这转化为 loop-forums.php)

这反过来又叫

<?php bbp_get_template_part( 'loop', 'single-forum'); ?>

(这转化为 loop-single-forum)

等等。

如果您需要更改 bbpress 模板,那么您真的应该在子主题中执行此操作,否则主题升级将覆盖它。

有关如何设置子主题的信息,请参阅

函数文件和子主题 – 解释!

更改模板

在您的主题中创建一个 bbPress 文件夹:

wp-content/%yourthemename%/bbpress

其中 %yourthemename% 是您的主题名称。

然后进入

wp-content/plugins/bbpress/templates/default/bbpress/

将您想要更改的任何文件复制到主题中的 bbPress 文件夹中。 bbPress 现在将使用此文件而不是默认文件,您可以修改此文件。

多站点

多站点

WordPress 多站点是一种能够创建由单个 WordPress 安装提供支持的站点网络的方法。以这种方式运行多个站点的设置非常简单,而 bbPress 在这种类型的环境中开箱即用。

要了解如何设置站点网络,请按照有关如何设置站点网络的 WordPress 法典文章进行操作:  如何创建网络

在以下任何一种情况下,bbPress 完全按照您的要求工作。 bbPress 本机仅在其启用的站点上运行。如果它在网络范围内、在子站点上或作为必须使用的插件被启用,它将在网络中的所有站点上闲置,为这些站点的关键大师准备创建论坛并制作适合该需求的体验地点。

全网启用

  1. 转到仪表盘 > 网络管理员。
  2. 转到插件 > 添加插件。
  3. 您将看到特色插件的 bbPress 部分,您可以从那里安装,或者您可以在搜索栏中键入 「bbPress」 并按 Enter 键来搜索插件。
  4. 单击立即安装。
  5. 打网络启用在插件列表中的 bbPress 的插件。

bbPress 也可以配置为必须使用的插件,以便在网络范围内工作。

仅多站点域根

  1. 转到仪表盘 > 网络管理。
  2. 转到插件 > 添加插件。
  3. 您将看到特色插件的 bbPress 部分,您可以从那里安装,或者您可以在搜索栏中键入 「bbPress」 并按 Enter 键来搜索插件。
  4. 单击立即安装。
  5. 安装 bbPress 插件后不要点击网络启用。
  6. 将鼠标悬停在 WordPress 工具栏顶部的 「我的站点」 链接上,然后选择您网络的域根站点。
  7. 转到插件 > 已安装的插件。
  8. 现在启用 bbPress 插件。

仅网络的子站点

  1. 转到仪表盘 > 网络管理。
  2. 转到插件 > 添加插件。
  3. 您将看到特色插件的 bbPress 部分,您可以从那里安装,或者您可以在搜索栏中键入 「bbPress」 并按 Enter 键来搜索插件。
  4. 单击立即安装。
  5. 安装 bbPress 插件后不要点击网络启用。
  6. 将鼠标悬停在 WordPress 工具栏顶部的 「我的站点」 链接上,然后选择您希望 bbPress 所在的网络站点。
  7. 转到插件 > 已安装的插件。
  8. 现在启用 bbPress 插件。

多网络安装

bbPress 还适用于多个 WordPress 网络。您可以将多站点安装变成许多多站点网络,所有这些网络都围绕一个中央用户群。您需要安装 WP Multi Network 等插件 才能配置此类设置。

Custom Capabilities

Custom Capabilities

Custom Capabilities
Codex Home → Custom Capabilities
Whilst bbPress provides a good set of forum roles, with distinct capabilities, you may want to amend these or add new names.
However the latest combination of WordPress and bbPress does not work if the code to do this is in the functions.php file of the child theme (or indeed parent theme!).
If you put this code in a plugin, it seems to work fine.
If you are comfortable in changing files and FTPing them to your site, then visit bbpress role adder – Robin W』s website (rewweb.co.uk) for a plugin and template that should work
Adding new names
At the simplest levels, you can add a new role name and give it existing capabilities
This can be useful just for your own admin purposes, but also if like me you hate the 「keymaster」 role name, just create a new role and give it keymaster capabilities.
The following code creates three new roles with names 『name 1′,』name 2′ and 『name 3′ the first role has participant, the second moderator and the third keymaster.
Simply amend the code to create as many roles with whatever capabilities you need
add_action (『wp_loaded』 , 『load_new_roles』) ;
function load_new_roles ()
{
add_filter( 『bbp_get_dynamic_roles』, 『add_custom_role』, 1 );
}
function add_custom_role( $bbp_roles )
{
$bbp_roles[『my_custom_role1』] = array(
『name』 =>』name 1′,
『capabilities』 =>bbp_get_caps_for_role( bbp_get_participant_role() ) // the same capabilities as participants
);
$bbp_roles[『my_custom_role2』] = array(
『name』 =>』name 2′,
『capabilities』 =>bbp_get_caps_for_role( bbp_get_participant_role() ) // the same capabilities as participants
);
$bbp_roles[『my_custom_role3』] = array(
『name』 =>』name 3′,
『capabilities』 =>bbp_get_caps_for_role( bbp_get_keymaster_role() ) // the same capabilities as keymaster
);
return $bbp_roles;
}
Creating new roles
If you want to add a new roles with specific capabilities, then you can add these
The code below adds a role called 『tutor』 simply change the word tutor wherever it occurs to the name you want and decide what capabilities you want to the role to have.
//code to add tutor role

add_action ('wp_loaded' , 'load_new_roles') ;

function load_new_roles ()
{
add_filter( 'bbp_get_dynamic_roles', 'add_new_roles', 1 );
add_filter( 'bbp_get_caps_for_role', 'add_role_caps_filter', 10, 2 );
}
function add_new_roles( $bbp_roles )
{
/* Add a role called tutor */
$bbp_roles['bbp_tutor'] = array(
'name' =>'Tutor',
'capabilities' =>custom_capabilities( 'bbp_tutor' )
);

return $bbp_roles;
}

function add_role_caps_filter( $caps, $role )
{
/* Only filter for roles we are interested in! */
if( $role == 'bbp_tutor' )
$caps = custom_capabilities( $role );

return $caps;
}

function custom_capabilities( $role )
{
switch ( $role )
{

/* Capabilities for 'tutor' role */
case 'bbp_tutor':
return array(
// Primary caps
'spectate' => true,
'participate' => true,
'moderate' => false,
'throttle' => false,
'view_trash' =>false,

// Forum caps
'publish_forums' =>false,
'edit_forums' => false,
'edit_others_forums' => false,
'delete_forums' => false,
'delete_others_forums' => false,
'read_private_forums' => true,
'read_hidden_forums' => false,

// Topic caps
'publish_topics' => true,
'edit_topics' => true,
'edit_others_topics' => false,
'delete_topics' => false,
'delete_others_topics' => false,
'read_private_topics' => true,

// Reply caps
'publish_replies' => true,
'edit_replies' => true,
'edit_others_replies' => false,
'delete_replies' => false,
'delete_others_replies' => false,
'read_private_replies' => true,

// Topic tag caps
'manage_topic_tags' => false,
'edit_topic_tags' => false,
'delete_topic_tags' => false,
'assign_topic_tags' => true,
);

break;

default :
return $role;
}
}
The code below adds two roles, tutor and pupil. Using this you should be able to add any number of roles
add_action ('wp_loaded' , 'load_new_roles') ;

function load_new_roles () {
add_filter( 'bbp_get_dynamic_roles', 'add_new_roles', 1 );
add_filter( 'bbp_get_caps_for_role', 'add_role_caps_filter', 10, 2 );
}
function add_new_roles( $bbp_roles )
{
/* Add a role called tutor */
$bbp_roles['bbp_tutor'] = array(
'name' =>'Tutor',
'capabilities' =>custom_capabilities( 'bbp_tutor' )
);

/* Add a role called pupil */
$bbp_roles['bbp_pupil'] = array(
'name' =>'Pupil',
'capabilities' =>custom_capabilities( 'bbp_pupil' )
);

return $bbp_roles;
}

function add_role_caps_filter( $caps, $role )
{
/* Only filter for roles we are interested in! */
if( $role == 'bbp_tutor' )
$caps = custom_capabilities( $role );

if( $role == 'bbp_pupil' )
$caps = custom_capabilities( $role );

return $caps;
}

function custom_capabilities( $role )
{
switch ( $role )
{

/* Capabilities for 'tutor' role */
case 'bbp_tutor':
return array(
// Primary caps
'spectate' => true,
'participate' => true,
'moderate' => false,
'throttle' => false,
'view_trash' =>false,

// Forum caps
'publish_forums' => false,
'edit_forums' => false,
'edit_others_forums' => false,
'delete_forums' => false,
'delete_others_forums' => false,
'read_private_forums' => true,
'read_hidden_forums' => false,

// Topic caps
'publish_topics' => true,
'edit_topics' => true,
'edit_others_topics' => false,
'delete_topics' => false,
'delete_others_topics' => false,
'read_private_topics' => true,

// Reply caps
'publish_replies' => true,
'edit_replies' => true,
'edit_others_replies' => false,
'delete_replies' => false,
'delete_others_replies' => false,
'read_private_replies' => true,

// Topic tag caps
'manage_topic_tags' => false,
'edit_topic_tags' => false,
'delete_topic_tags' => false,
'assign_topic_tags' => true,
);

/* Capabilities for 'pupil' role */
case 'bbp_pupil':
return array(
// Primary caps
'spectate' => true,
'participate' => true,
'moderate' => false,
'throttle' => false,
'view_trash' => false,

// Forum caps
'publish_forums' => false,
'edit_forums' => false,
'edit_others_forums' => false,
'delete_forums' => false,
'delete_others_forums' => false,
'read_private_forums' => true,
'read_hidden_forums' => false,

// Topic caps
'publish_topics' => true,
'edit_topics' => true,
'edit_others_topics' => false,
'delete_topics' => false,
'delete_others_topics' => false,
'read_private_topics' => true,

// Reply caps
'publish_replies' => true,
'edit_replies' => true,
'edit_others_replies' => false,
'delete_replies' => false,
'delete_others_replies' => false,
'read_private_replies' => true,

// Topic tag caps
'manage_topic_tags' => false,
'edit_topic_tags' => false,
'delete_topic_tags' => false,
'assign_topic_tags' => true,
);

break;

default :
return $role;
}
}

导出数据

导出数据

导出您的 bbPress 数据 (论坛、话题和回复对于快速备份或从一个安装了 bbPress 的 WordPress 站点迁移到另一个站点非常有用。

  1. 登录您的 WordPress 后端。
  2. 转到工具 > 导出
  3. 您将看到一个屏幕以选择要导出的内容。您可以选择按每个文章类型导出 bbPress 内容,也可以一次导出所有内容。
  4. 选择要导出的内容后,单击 「下载导出文件」 按钮。
  5. 现在您应该下载文件,稍后您可以通过转到 「工具」>「导入」 将其导入到另一个站点

测试您的 bbPress 安装

测试您的 bbPress 安装

无论您是在开发插件、创建主题还是为 bbPress 的核心做出贡献,您都可能需要先学习如何对其进行测试并习惯其功能。

创建测试站点

从尝试学习 bbPress 工作原理的初学者到想要为 bbPress 开发的高级用户,创建测试站点非常有用。

创建测试数据

您是否已经创建了一个测试站点,并且想要使用一些演示数据自动填充 bbPress,以便您可以查看 bbPress 的外观、运行和执行情况。然后按照这些方法创建一些测试数据。

WP Symposium

WP Symposium

WP Symposium
Codex Home → Getting Started → Importing Data → Import Forums → WP Symposium
WP Symposium v14.x Importer for bbPress
Topics

WP Symposium 『Group Topics』 from Groups are not imported.

Replies

WP Symposium 『Forum comments』 or 『Replies to replies』 and/or 『Threaded replies』 are not imported.

删除 bbPress

删除 bbPress

删除 bbPress 数据

默认情况下,如果插件被停用和删除,bbPress 不会删除任何数据,因此如果您当前安装的 bbPress 有问题,您可以安装插件的干净版本,并且仍然像以前一样拥有所有数据。

如果您决定不运行 bbPress 并且您已经选择要删除 bbPress 创建的所有先前数据,则可以运行重置论坛工具来删除所有 bbPress 数据。

  1. 登录您的 WordPress 后端。
  2. 转至工具 > 论坛 > 重置论坛。
  3. 选中 「您确定要执行此操作吗?」 复选框。
  4. 可选:您可能还想检查删除导入的用户?因为一旦 bbPress 被重置,删除这些用户所需的元数据也将被删除。
  5. 单击重置 bbPress 。

请注意,如果您看到 「删除转换表... 失败」,如果您没有从其他论坛系统导入,看到此信息是正常的,因为在导入过程中会添加一个额外的数据库表。

使用重置论坛工具将从您的 WordPress 数据库中删除所有 bbPress 数据,包括自定义文章类型、话题标签分类法和 bbPress 用户元数据。

但是,在旧版本的 bbPress 中存在一个错误,即 bbPress 不会完全删除用户角色。 (参见 #2580

因此,如果您使用的是旧版本的 bbPress,请在您的子主题 functions.php 文件中添加此功能。

$wp_roles = new WP_Roles();
$wp_roles->remove_role("bbp_keymaster");
$wp_roles->remove_role("bbp_moderator");
$wp_roles->remove_role("bbp_participant");
$wp_roles->remove_role("bbp_spectator");
$wp_roles->remove_role("bbp_blocked");

刷新您的网站,现在所有与 bbPress 相关的用户角色都已从数据库中删除。之后,您可以从子主题的 functions.php 文件中删除代码。

现在删除所有 bbPress 数据后,您可以继续卸载 bbPress 。

卸载 bbPress

如果您因为核心文件被修改而需要安装新版本的 bbPress,您遇到了想要尝试修复的严重问题,或者您只是不想再使用 bbPress,您可以按照以下步骤操作从您的站点卸载 bbPress 。

  1. 登录您的 WordPress 后端。
  2. 转到插件 > 已安装的插件。
  3. 向下滚动,直到看到 bbPress,然后单击停用。
  4. 页面重新加载后,向下滚动到 bbPress 插件,现在单击红色的删除链接。
  5. 您现在将看到一个确认删除 bbPress 插件的屏幕,如果您确定要从安装中删除 bbPress,请点击 OK 。按钮。
  6. bbPress 现在已从您的站点中卸载。

导入疑难解答

导入疑难解答

特定论坛导入

确保您还检查每个论坛导入器法典页面以了解与每个论坛相关的特定问题,列表可在此处找到。

导入被 「卡住」

导入话题或回复时,导入可能会 「卡住」 并且导入将不再继续导入。

这些类型的错误通常是由于该帖子中的某些编码问题造成的。有时这是从在某个时候完成的编码转换为 UTF8 。不管它是什么,如果不对查询设置时间限制并将差异一分为二,直到我们可以缩小违规条目的范围并跳过它,这几乎是不可能检测到的。因为查询自然会花费很长时间,并且会导致丢失数据,所以我对这种方法不满意。

解决方法是查找并删除有问题的话题或回复,这既耗时又棘手,但这是现阶段的唯一方法。

这是我如何调试它并找到有问题的话题/回复:

  • 导入挂起后,单击 stop,记下它的位置,例如 Converting 11,299 – 11,300
  • start 再次单击,导入将从停止的地方继续
  • 如果它再次挂起,请注意它再次达到的位置
  • 完成后制作源数据库的新副本
  • 现在删除数据库中所有不在导入过程中失败的行范围内的行
  • 使用此数据库执行全新导入,并将 「行数限制」 设置设置为 「1」
  • 导入应该挂在有问题的话题/回复上
  • 再次,记下它的话题/回复
  • 点击停止,再次点击开始继续
  • 一旦您有您的违规者名单并且导入完成,从数据库中删除这些行并再次测试以确保它完成而不会挂起
  • 现在回到您的完整数据库 (可能是原始数据库的副本) 从数据库中删除这些相同的行并再次运行导入

调整 MySQL

当您有非常大的论坛要导入时,可能需要很长时间。

@ezyridah 执行了 100 万多条消息的 MyBB 导入,接近 4 万个话题和 400 多个成员,耗时约 48 小时,他添加了一些自定义 PHP 和 MySQL 调整,有助于加快速度,您可以看到他使用了哪些设置在这里,请注意,这是非常先进的,不适合胆小的人。

西里尔字母用户名

如果您需要在导入之前导入用户 'Cyrillic' 安装并启用 @SergeyBiryukovAllow Cyrillic Usernames