Пример #1
0
function mb_get_board_home_url()
{
    if ('forums' === mb_get_show_on_front()) {
        $url = get_post_type_archive_link(mb_get_forum_post_type());
    } elseif ('topics' === mb_get_show_on_front()) {
        $url = get_post_type_archive_link(mb_get_topic_post_type());
    } else {
        $url = home_url(mb_get_root_slug());
    }
    return apply_filters('mb_get_board_home_url', $url);
}
Пример #2
0
/**
 * Registers post types needed by the plugin.
 *
 * @since  1.0.0
 * @access public
 * @return void
 */
function mb_register_post_types()
{
    /* Get admin menu page. */
    $menu_page = mb_get_admin_menu_page();
    /* Get post type names. */
    $forum_type = mb_get_forum_post_type();
    $topic_type = mb_get_topic_post_type();
    $reply_type = mb_get_reply_post_type();
    /* Set up the arguments for the "forum" post type. */
    $forum_args = array('description' => '', 'public' => true, 'publicly_queryable' => true, 'exclude_from_search' => true, 'show_in_nav_menus' => true, 'show_ui' => true, 'show_in_menu' => "edit.php?post_type={$forum_type}" === $menu_page ? true : false, 'show_in_admin_bar' => true, 'menu_position' => null, 'menu_icon' => 'dashicons-format-chat', 'can_export' => true, 'delete_with_user' => false, 'hierarchical' => true, 'has_archive' => 'forums' === mb_get_show_on_front() ? mb_get_root_slug() : mb_get_forum_slug(), 'query_var' => $forum_type, 'capability_type' => 'forum', 'map_meta_cap' => true, 'capabilities' => mb_get_forum_capabilities(), 'rewrite' => array('slug' => mb_get_forum_slug(), 'with_front' => false, 'pages' => false, 'feeds' => true, 'ep_mask' => EP_PERMALINK), 'supports' => array('title', 'editor', 'thumbnail'), 'labels' => array('name' => __('Forums', 'message-board'), 'singular_name' => __('Forum', 'message-board'), 'menu_name' => __('Message Board', 'message-board'), 'name_admin_bar' => __('Forum', 'message-board'), 'all_items' => __('Forums', 'message-board'), 'add_new' => __('Add Forum', 'message-board'), 'add_new_item' => __('Add New Forum', 'message-board'), 'edit_item' => __('Edit Forum', 'message-board'), 'new_item' => __('New Forum', 'message-board'), 'view_item' => __('View Forum', 'message-board'), 'search_items' => __('Search Forums', 'message-board'), 'not_found' => __('No forums found', 'message-board'), 'not_found_in_trash' => __('No forums found in trash', 'message-board'), 'parent_item_colon' => __('Parent Forum:', 'message-board'), 'archive_title' => __('Forums', 'message-board'), 'mb_dashboard_count' => _n_noop('%s Forum', '%s Forums', 'message-board'), 'mb_form_title' => __('Forum Title:', 'message-board'), 'mb_form_type' => __('Forum Type:', 'message-board'), 'mb_form_status' => __('Status:', 'message-board'), 'mb_form_order' => __('Order:', 'message-board'), 'mb_form_content' => __('Description:', 'message-board'), 'mb_form_edit_item' => __('Edit Forum: %s', 'message-board'), 'mb_form_title_placeholder' => __('Enter forum title', 'message-board'), 'mb_form_content_placeholder' => __('Enter forum description…', 'message-board'), 'mb_form_subscribe' => __('Notify me of topics and replies via email', 'message-board')));
    /* Set up the arguments for the "topic" post type. */
    $topic_args = array('description' => '', 'public' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'show_in_nav_menus' => false, 'show_ui' => true, 'show_in_menu' => "edit.php?post_type={$topic_type}" === $menu_page ? true : $menu_page, 'show_in_admin_bar' => true, 'menu_position' => null, 'menu_icon' => 'dashicons-format-chat', 'can_export' => true, 'delete_with_user' => false, 'hierarchical' => false, 'has_archive' => 'topics' === mb_get_show_on_front() ? mb_get_root_slug() : mb_get_topic_slug(), 'query_var' => mb_get_topic_post_type(), 'capability_type' => $topic_type, 'map_meta_cap' => true, 'capabilities' => mb_get_topic_capabilities(), 'rewrite' => array('slug' => mb_get_topic_slug(), 'with_front' => false, 'pages' => false, 'feeds' => true, 'ep_mask' => EP_PERMALINK), 'supports' => array('title', 'editor'), 'labels' => array('name' => __('Topics', 'message-board'), 'singular_name' => __('Topic', 'message-board'), 'menu_name' => __('Message Board', 'message-board'), 'name_admin_bar' => __('Topic', 'message-board'), 'all_items' => __('Topics', 'message-board'), 'add_new' => __('Add Topic', 'message-board'), 'add_new_item' => __('Add New Topic', 'message-board'), 'edit_item' => __('Edit Topic', 'message-board'), 'new_item' => __('New Topic', 'message-board'), 'view_item' => __('View Topic', 'message-board'), 'search_items' => __('Search Topics', 'message-board'), 'not_found' => __('No topics found', 'message-board'), 'not_found_in_trash' => __('No topics found in trash', 'message-board'), 'parent_item_colon' => __('Forum:', 'message-board'), 'archive_title' => __('Topics', 'message-board'), 'mb_dashboard_count' => _n_noop('%s Topic', '%s Topics', 'message-board'), 'mb_form_title' => __('Topic Title:', 'message-board'), 'mb_form_type' => __('Topic Type:', 'message-board'), 'mb_form_status' => __('Status:', 'message-board'), 'mb_form_content' => __('Message:', 'message-board'), 'mb_form_edit_item' => __('Edit Topic: %s', 'message-board'), 'mb_form_title_placeholder' => __('Enter topic title', 'message-board'), 'mb_form_content_placeholder' => __('Enter topic message…', 'message-board'), 'mb_form_subscribe' => __('Notify me of follow-up posts via email', 'message-board')));
    /* Set up the arguments for the "reply" post type. */
    $reply_args = array('description' => '', 'public' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'show_in_nav_menus' => false, 'show_ui' => true, 'show_in_menu' => "edit.php?post_type={$reply_type}" === $menu_page ? true : $menu_page, 'show_in_admin_bar' => false, 'menu_position' => null, 'menu_icon' => 'dashicons-format-chat', 'can_export' => true, 'delete_with_user' => false, 'hierarchical' => false, 'has_archive' => mb_get_reply_slug(), 'query_var' => $reply_type, 'capability_type' => 'forum_reply', 'map_meta_cap' => true, 'capabilities' => mb_get_reply_capabilities(), 'rewrite' => array('slug' => mb_get_reply_slug(), 'with_front' => false, 'pages' => false, 'feeds' => false, 'ep_mask' => EP_PERMALINK), 'supports' => array('editor'), 'labels' => array('name' => __('Replies', 'message-board'), 'singular_name' => __('Reply', 'message-board'), 'menu_name' => __('Message Board', 'message-board'), 'name_admin_bar' => __('Reply', 'message-board'), 'all_items' => __('Replies', 'message-board'), 'add_new' => __('Add Reply', 'message-board'), 'add_new_item' => __('Leave A Reply', 'message-board'), 'edit_item' => __('Edit Reply', 'message-board'), 'new_item' => __('New Reply', 'message-board'), 'view_item' => __('View Reply', 'message-board'), 'search_items' => __('Search Replies', 'message-board'), 'not_found' => __('No replies found', 'message-board'), 'not_found_in_trash' => __('No replies found in trash', 'message-board'), 'parent_item_colon' => __('Topic:', 'message-board'), 'archive_title' => __('Replies', 'message-board'), 'mb_dashboard_count' => _n_noop('%s Reply', '%s Replies', 'message-board'), 'mb_form_content' => __('Message:', 'message-board'), 'mb_form_edit_item' => __('Edit Reply: %s', 'message-board'), 'mb_form_content_placeholder' => __('Enter reply message…', 'message-board'), 'mb_form_subscribe' => __('Notify me of follow-up posts via email', 'message-board')));
    /* Register post types. */
    register_post_type($forum_type, apply_filters('mb_forum_post_type_args', $forum_args));
    register_post_type($topic_type, apply_filters('mb_topic_post_type_args', $topic_args));
    register_post_type($reply_type, apply_filters('mb_reply_post_type_args', $reply_args));
}
Пример #3
0
/**
 * Sets up custom rewrite rules for pages that aren't handled by the CPT and CT APIs but are needed by
 * the plugin.
 *
 * @since  1.0.0
 * @access public
 * @return void
 */
function mb_rewrite_rules()
{
    $topic_type = mb_get_topic_post_type();
    /* Overwrite the topic rewrite rules. */
    add_filter("{$topic_type}_rewrite_rules", 'mb_forum_topic_rewrite_rules');
    /* Get slugs. */
    $user_slug = mb_get_user_slug();
    $login_slug = mb_get_login_slug();
    $edit_slug = mb_get_edit_slug();
    /* Get query vars. */
    $user_page_qv = 'mb_user_page';
    /* Add rewrite tag for single user pages. */
    add_rewrite_tag('%' . $user_page_qv . '%', '([^/]+)');
    /* User archive rewrite rules. */
    add_rewrite_rule($user_slug . '/?$', 'index.php?mb_custom=users', 'top');
    add_rewrite_rule($user_slug . '/page/?([0-9]{1,})/?$', 'index.php?mb_custom=users&paged=$matches[1]', 'top');
    /* User role archive rewrite rules. */
    add_rewrite_rule($user_slug . '/roles/([^/]+)/page/?([0-9]{1,})/?$', 'index.php?mb_custom=users&mb_role=$matches[1]&paged=$matches[2]', 'top');
    add_rewrite_rule($user_slug . '/roles/([^/]+)/?$', 'index.php?mb_custom=users&mb_role=$matches[1]', 'top');
    add_rewrite_rule($user_slug . '/roles/page/?([0-9]{1,})/?$', 'index.php?mb_custom=roles&paged=$matches[1]', 'top');
    add_rewrite_rule($user_slug . '/roles/?$', 'index.php?mb_custom=roles', 'top');
    $user_pages = 'forums|topics|replies|bookmarks|topic-subscriptions|forum-subscriptions';
    /* Single user rewrite rules. */
    add_rewrite_rule($user_slug . '/([^/]+)/(' . $user_pages . ')/page/?([0-9]{1,})/?$', 'index.php?mb_custom=users&author_name=$matches[1]&' . $user_page_qv . '=$matches[2]&paged=$matches[3]', 'top');
    add_rewrite_rule($user_slug . '/([^/]+)/(' . $user_pages . ')/?$', 'index.php?mb_custom=users&author_name=$matches[1]&' . $user_page_qv . '=$matches[2]', 'top');
    add_rewrite_rule($user_slug . '/([^/]+)/?$', 'index.php?mb_custom=users&author_name=$matches[1]', 'top');
    /* Login page. */
    add_rewrite_rule($login_slug . '/?$', 'index.php?mb_custom=login', 'top');
    $search_slug = trailingslashit(mb_get_root_slug()) . 'search';
    add_rewrite_rule($search_slug . '/?$', 'index.php?mb_custom=search', 'top');
    /* Edit page. */
    //add_rewrite_rule( $edit_slug . '/?$', 'index.php?mb_custom=edit', 'top' );
}