Changeset 10402
- Timestamp:
- 12/13/2015 04:45:43 PM (10 years ago)
- Location:
- branches/2.4/src/bp-core
- Files:
-
- 3 edited
-
bp-core-filters.php (modified) (5 diffs)
-
bp-core-functions.php (modified) (2 diffs)
-
bp-core-template.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/2.4/src/bp-core/bp-core-filters.php
r10276 r10402 661 661 */ 662 662 function bp_modify_page_title( $title = '', $sep = '»', $seplocation = 'right' ) { 663 global $bp, $paged, $page, $_wp_theme_features; 664 665 // If this is not a BP page, just return the title produced by WP 666 if ( bp_is_blog_page() ) { 663 global $paged, $page, $_wp_theme_features; 664 665 // Get the BuddyPress title parts 666 $bp_title_parts = bp_get_title_parts( $seplocation ); 667 668 // If not set, simply return the original title 669 if ( ! $bp_title_parts ) { 667 670 return $title; 668 }669 670 // If this is a 404, let WordPress handle it671 if ( is_404() ) {672 return $title;673 }674 675 // If this is the front page of the site, return WP's title676 if ( is_front_page() || is_home() ) {677 return $title;678 }679 680 // Return WP's title if not a BuddyPress page681 if ( ! is_buddypress() ) {682 return $title;683 }684 685 // Setup an empty title parts array686 $title_parts = array();687 688 // Is there a displayed user, and do they have a name?689 $displayed_user_name = bp_get_displayed_user_fullname();690 691 // Displayed user692 if ( ! empty( $displayed_user_name ) && ! is_404() ) {693 694 // Get the component's ID to try and get its name695 $component_id = $component_name = bp_current_component();696 697 // Set empty subnav name698 $component_subnav_name = '';699 700 // Use the component nav name701 if ( ! empty( $bp->bp_nav[$component_id] ) ) {702 $component_name = _bp_strip_spans_from_title( $bp->bp_nav[ $component_id ]['name'] );703 704 // Fall back on the component ID705 } elseif ( ! empty( $bp->{$component_id}->id ) ) {706 $component_name = ucwords( $bp->{$component_id}->id );707 }708 709 // Append action name if we're on a member component sub-page710 if ( ! empty( $bp->bp_options_nav[ $component_id ] ) && ! empty( $bp->canonical_stack['action'] ) ) {711 $component_subnav_name = wp_filter_object_list( $bp->bp_options_nav[ $component_id ], array( 'slug' => bp_current_action() ), 'and', 'name' );712 713 if ( ! empty( $component_subnav_name ) ) {714 $component_subnav_name = array_shift( $component_subnav_name );715 }716 }717 718 // If on the user profile's landing page, just use the fullname719 if ( bp_is_current_component( $bp->default_component ) && ( bp_get_requested_url() === bp_displayed_user_domain() ) ) {720 $title_parts[] = $displayed_user_name;721 722 // Use component name on member pages723 } else {724 $title_parts = array_merge( $title_parts, array_map( 'strip_tags', array(725 $displayed_user_name,726 $component_name,727 ) ) );728 729 // If we have a subnav name, add it separately for localization730 if ( ! empty( $component_subnav_name ) ) {731 $title_parts[] = strip_tags( $component_subnav_name );732 }733 }734 735 // A single group736 } elseif ( bp_is_active( 'groups' ) && ! empty( $bp->groups->current_group ) && ! empty( $bp->bp_options_nav[ $bp->groups->current_group->slug ] ) ) {737 $subnav = isset( $bp->bp_options_nav[ $bp->groups->current_group->slug ][ bp_current_action() ]['name'] ) ? $bp->bp_options_nav[ $bp->groups->current_group->slug ][ bp_current_action() ]['name'] : '';738 $title_parts = array( $bp->bp_options_title, $subnav );739 740 // A single item from a component other than groups741 } elseif ( bp_is_single_item() ) {742 $title_parts = array( $bp->bp_options_title, $bp->bp_options_nav[ bp_current_item() ][ bp_current_action() ]['name'] );743 744 // An index or directory745 } elseif ( bp_is_directory() ) {746 $current_component = bp_current_component();747 748 // No current component (when does this happen?)749 $title_parts = array( _x( 'Directory', 'component directory title', 'buddypress' ) );750 751 if ( ! empty( $current_component ) ) {752 $title_parts = array( bp_get_directory_title( $current_component ) );753 }754 755 // Sign up page756 } elseif ( bp_is_register_page() ) {757 $title_parts = array( __( 'Create an Account', 'buddypress' ) );758 759 // Activation page760 } elseif ( bp_is_activation_page() ) {761 $title_parts = array( __( 'Activate Your Account', 'buddypress' ) );762 763 // Group creation page764 } elseif ( bp_is_group_create() ) {765 $title_parts = array( __( 'Create a Group', 'buddypress' ) );766 767 // Blog creation page768 } elseif ( bp_is_create_blog() ) {769 $title_parts = array( __( 'Create a Site', 'buddypress' ) );770 }771 772 // Strip spans773 $title_parts = array_map( '_bp_strip_spans_from_title', $title_parts );774 775 // sep on right, so reverse the order776 if ( 'right' == $seplocation ) {777 $title_parts = array_reverse( $title_parts );778 671 } 779 672 … … 791 684 // Append the site title to title parts if theme supports title tag 792 685 if ( true === $title_tag_compatibility ) { 793 $ title_parts[] = $blogname;794 795 if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {796 $ title_parts[] = sprintf( __( 'Page %s', 'buddypress' ), max( $paged, $page ) );686 $bp_title_parts['site'] = $blogname; 687 688 if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() && ! bp_is_single_activity() ) { 689 $bp_title_parts['page'] = sprintf( __( 'Page %s', 'buddypress' ), max( $paged, $page ) ); 797 690 } 798 691 } … … 802 695 803 696 // Join the parts together 804 $new_title = join( $prefix, array_filter( $ title_parts ) );697 $new_title = join( $prefix, array_filter( $bp_title_parts ) ); 805 698 806 699 // Append the prefix for pre `title-tag` compatibility … … 810 703 811 704 /** 812 * Filters the page title for BuddyPress pages.705 * Filters the older 'wp_title' page title for BuddyPress pages. 813 706 * 814 707 * @since 1.5.0 … … 821 714 return apply_filters( 'bp_modify_page_title', $new_title, $title, $sep, $seplocation ); 822 715 } 823 add_filter( 'wp_title', 'bp_modify_page_title', 20, 3 ); 824 add_filter( 'bp_modify_page_title', 'wptexturize' ); 825 add_filter( 'bp_modify_page_title', 'convert_chars' ); 826 add_filter( 'bp_modify_page_title', 'esc_html' ); 827 828 /** 829 * Strip span tags out of title part strings. 830 * 831 * This is a temporary function for compatibility with WordPress versions 832 * less than 4.0, and should be removed at a later date. 833 * 834 * @param string $title_part 835 * 836 * @return string 837 */ 838 function _bp_strip_spans_from_title( $title_part = '' ) { 839 $title = $title_part; 840 $span = strpos( $title, '<span' ); 841 if ( false !== $span ) { 842 $title = substr( $title, 0, $span - 1 ); 843 } 844 return $title; 845 } 716 add_filter( 'wp_title', 'bp_modify_page_title', 20, 3 ); 717 add_filter( 'bp_modify_page_title', 'wptexturize' ); 718 add_filter( 'bp_modify_page_title', 'convert_chars' ); 719 add_filter( 'bp_modify_page_title', 'esc_html' ); 720 721 /** 722 * Filter the document title for BuddyPress pages. 723 * 724 * @since 2.4.3 725 * 726 * @param array $title The WordPress document title parts 727 * @return array the unchanged title parts or the BuddyPress ones 728 */ 729 function bp_modify_document_title_parts( $title = array() ) { 730 // Get the BuddyPress title parts 731 $bp_title_parts = bp_get_title_parts(); 732 733 // If not set, simply return the original title 734 if ( ! $bp_title_parts ) { 735 return $title; 736 } 737 738 // Get the separator used by wp_get_document_title() 739 $sep = apply_filters( 'document_title_separator', '-' ); 740 741 // Build the BuddyPress portion of the title. 742 // We don't need to sanitize this as WordPress will take care of it. 743 $bp_title = array( 744 'title' => join( " $sep ", $bp_title_parts ) 745 ); 746 747 // Add the pagination number if needed (not sure if this is necessary). 748 if ( isset( $title['page'] ) && ! bp_is_single_activity() ) { 749 $bp_title['page'] = $title['page']; 750 } 751 752 // Add the sitename if needed. 753 if ( isset( $title['site'] ) ) { 754 $bp_title['site'] = $title['site']; 755 } 756 757 /** 758 * Filters BuddyPress title parts that will be used into the document title. 759 * 760 * @since 2.4.3 761 * 762 * @param array $bp_title The BuddyPress page title parts. 763 * @param array $title The original WordPress title parts. 764 */ 765 return apply_filters( 'bp_modify_document_title_parts', $bp_title, $title ); 766 } 767 add_filter( 'document_title_parts', 'bp_modify_document_title_parts', 20, 1 ); 846 768 847 769 /** -
branches/2.4/src/bp-core/bp-core-functions.php
r10110 r10402 2297 2297 add_action( 'bp_init', 'bp_remove_adjacent_posts_rel_link' ); 2298 2298 2299 /** 2300 * Strip the span count of a menu item or of a title part. 2301 * 2302 * @since 2.2.2 2303 * 2304 * @param string $title_part Title part to clean up. 2305 * @return string 2306 */ 2307 function _bp_strip_spans_from_title( $title_part = '' ) { 2308 $title = $title_part; 2309 $span = strpos( $title, '<span' ); 2310 if ( false !== $span ) { 2311 $title = substr( $title, 0, $span - 1 ); 2312 } 2313 return trim( $title ); 2314 } 2315 2299 2316 /** Nav Menu ******************************************************************/ 2300 2317 … … 2348 2365 2349 2366 // Remove <span>number</span> 2350 $item_name = preg_replace( '/([.0-9]+)/', '', $bp_item['name'] ); 2351 $item_name = trim( strip_tags( $item_name ) ); 2367 $item_name = _bp_strip_spans_from_title( $bp_item['name'] ); 2352 2368 2353 2369 $page_args[ $bp_item['slug'] ] = (object) array( -
branches/2.4/src/bp-core/bp-core-template.php
r10209 r10402 2795 2795 function bp_is_register_page() { 2796 2796 return (bool) bp_is_current_component( 'register' ); 2797 } 2798 2799 /** 2800 * Get the title parts of the BuddyPress displayed page 2801 * 2802 * @since 2.4.3 2803 * 2804 * @param string $seplocation 2805 * @return array the title parts 2806 */ 2807 function bp_get_title_parts( $seplocation = 'right' ) { 2808 $bp = buddypress(); 2809 2810 // Defaults to an empty array 2811 $bp_title_parts = array(); 2812 2813 // If this is not a BP page, return the empty array. 2814 if ( bp_is_blog_page() ) { 2815 return $bp_title_parts; 2816 } 2817 2818 // If this is a 404, return the empty array. 2819 if ( is_404() ) { 2820 return $bp_title_parts; 2821 } 2822 2823 // If this is the front page of the site, return the empty array. 2824 if ( is_front_page() || is_home() ) { 2825 return $bp_title_parts; 2826 } 2827 2828 // Return the empty array if not a BuddyPress page. 2829 if ( ! is_buddypress() ) { 2830 return $bp_title_parts; 2831 } 2832 2833 // Now we can build the BP Title Parts 2834 // Is there a displayed user, and do they have a name? 2835 $displayed_user_name = bp_get_displayed_user_fullname(); 2836 2837 // Displayed user. 2838 if ( ! empty( $displayed_user_name ) && ! is_404() ) { 2839 2840 // Get the component's ID to try and get its name. 2841 $component_id = $component_name = bp_current_component(); 2842 2843 // Set empty subnav name. 2844 $component_subnav_name = ''; 2845 2846 // Use the component nav name. 2847 if ( ! empty( $bp->bp_nav[$component_id] ) ) { 2848 $component_name = _bp_strip_spans_from_title( $bp->bp_nav[ $component_id ]['name'] ); 2849 2850 // Fall back on the component ID. 2851 } elseif ( ! empty( $bp->{$component_id}->id ) ) { 2852 $component_name = ucwords( $bp->{$component_id}->id ); 2853 } 2854 2855 // Append action name if we're on a member component sub-page. 2856 if ( ! empty( $bp->bp_options_nav[ $component_id ] ) && ! empty( $bp->canonical_stack['action'] ) ) { 2857 $component_subnav_name = wp_filter_object_list( $bp->bp_options_nav[ $component_id ], array( 'slug' => bp_current_action() ), 'and', 'name' ); 2858 2859 if ( ! empty( $component_subnav_name ) ) { 2860 $component_subnav_name = array_shift( $component_subnav_name ); 2861 } 2862 } 2863 2864 // If on the user profile's landing page, just use the fullname. 2865 if ( bp_is_current_component( $bp->default_component ) && ( bp_get_requested_url() === bp_displayed_user_domain() ) ) { 2866 $bp_title_parts[] = $displayed_user_name; 2867 2868 // Use component name on member pages. 2869 } else { 2870 $bp_title_parts = array_merge( $bp_title_parts, array_map( 'strip_tags', array( 2871 $displayed_user_name, 2872 $component_name, 2873 ) ) ); 2874 2875 // If we have a subnav name, add it separately for localization. 2876 if ( ! empty( $component_subnav_name ) ) { 2877 $bp_title_parts[] = strip_tags( $component_subnav_name ); 2878 } 2879 } 2880 2881 // A single group. 2882 } elseif ( bp_is_active( 'groups' ) && ! empty( $bp->groups->current_group ) && ! empty( $bp->bp_options_nav[ $bp->groups->current_group->slug ] ) ) { 2883 $subnav = isset( $bp->bp_options_nav[ $bp->groups->current_group->slug ][ bp_current_action() ]['name'] ) ? $bp->bp_options_nav[ $bp->groups->current_group->slug ][ bp_current_action() ]['name'] : ''; 2884 $bp_title_parts = array( $bp->bp_options_title, $subnav ); 2885 2886 // A single item from a component other than groups. 2887 } elseif ( bp_is_single_item() ) { 2888 $bp_title_parts = array( $bp->bp_options_title, $bp->bp_options_nav[ bp_current_item() ][ bp_current_action() ]['name'] ); 2889 2890 // An index or directory. 2891 } elseif ( bp_is_directory() ) { 2892 $current_component = bp_current_component(); 2893 2894 // No current component (when does this happen?). 2895 $bp_title_parts = array( _x( 'Directory', 'component directory title', 'buddypress' ) ); 2896 2897 if ( ! empty( $current_component ) ) { 2898 $bp_title_parts = array( bp_get_directory_title( $current_component ) ); 2899 } 2900 2901 // Sign up page. 2902 } elseif ( bp_is_register_page() ) { 2903 $bp_title_parts = array( __( 'Create an Account', 'buddypress' ) ); 2904 2905 // Activation page. 2906 } elseif ( bp_is_activation_page() ) { 2907 $bp_title_parts = array( __( 'Activate Your Account', 'buddypress' ) ); 2908 2909 // Group creation page. 2910 } elseif ( bp_is_group_create() ) { 2911 $bp_title_parts = array( __( 'Create a Group', 'buddypress' ) ); 2912 2913 // Blog creation page. 2914 } elseif ( bp_is_create_blog() ) { 2915 $bp_title_parts = array( __( 'Create a Site', 'buddypress' ) ); 2916 } 2917 2918 // Strip spans. 2919 $bp_title_parts = array_map( '_bp_strip_spans_from_title', $bp_title_parts ); 2920 2921 // Sep on right, so reverse the order. 2922 if ( 'right' === $seplocation ) { 2923 $bp_title_parts = array_reverse( $bp_title_parts ); 2924 } 2925 2926 /** 2927 * Filter BuddyPress title parts before joining. 2928 * 2929 * @since 2.4.3 2930 * 2931 * @param array $bp_title_parts Current BuddyPress title parts 2932 * @return array 2933 */ 2934 return (array) apply_filters( 'bp_get_title_parts', $bp_title_parts ); 2797 2935 } 2798 2936
Note: See TracChangeset
for help on using the changeset viewer.