伙伴按下我的个人资料上的创建自定义选项卡并在主页上添加

时间:2014-05-31 作者:pulla

我一直在尝试在用户配置文件上添加两个选项卡。“帖子”,“图库”

帖子:我发布的帖子。它将显示自定义帖子类型“user post”

图库:我的图片。。或任何事情。。它将显示自定义帖子类型“用户图像”

// Set up Cutsom BP navigation
 function my_setup_nav() {
  global $bp;

  bp_core_new_nav_item( array(
        \'name\' => __( \'Posts\', \'buddypress\' ),
        \'slug\' => \'user-posts\',
        \'position\' => 19,
        \'screen_function\' => \'jv_user_posts\', 
        \'show_for_displayed_user\' => true

  ) );

  bp_core_new_nav_item( array(
        \'name\' => __( \'Gallery\', \'buddypress\' ),
        \'slug\' => \'user-gallery\',
        \'position\' => 20,
        \'screen_function\' => \'jv_user_gallery\' 
  ) );

  // Change the order of menu items
  $bp->bp_nav[\'messages\'][\'position\'] = 100;

  // Remove a menu item
  $bp->bp_nav[\'activity\'] = false;
  $bp->bp_nav[\'blogs\'] = false;

  // Change name of menu item
  $bp->bp_nav[\'groups\'][\'name\'] = \'community\';
 }
 add_action( \'bp_setup_nav\', \'my_setup_nav\' );

 // Load a page template
 function jv_user_posts() {
  bp_core_load_template( \'buddypress/bp/cst-user-posts\' );
 }
 function jv_user_gallery() {
  bp_core_load_template( \'buddypress/bp/cst-user-gallery\' );
 }
已成功创建2个选项卡!工作正常!

但它拥有“cst user posts.php”页面和“cst user gallery.php”页面。

我的意思是我想把它们添加到/buddypress/members/sigle/home中。php文件

然后,它们将位于型材头部下方。

我想这部分是在家里。php

 <?php do_action( ‘bp_before_member_body’ );

 if ( bp_is_user_activity() || !bp_current_component() ) :
  bp_get_template_part( ‘members/single/activity’ );

 elseif ( bp_is_user_blogs() ) :
 bp_get_template_part( ‘members/single/blogs’ );

 elseif ( bp_is_user_friends() ) :
 bp_get_template_part( ‘members/single/friends’ );

 elseif ( bp_is_user_groups() ) :
 bp_get_template_part( ‘members/single/groups’ );

 elseif ( bp_is_user_messages() ) :
 bp_get_template_part( ‘members/single/messages’ );

 elseif ( bp_is_user_profile() ) :
 bp_get_template_part( ‘members/single/profile’ );

 elseif ( bp_is_user_forums() ) :
 bp_get_template_part( ‘members/single/forums’ );

 elseif ( bp_is_user_notifications() ) :
 bp_get_template_part( ‘members/single/notifications’ );

 elseif ( bp_is_user_settings() ) :
 bp_get_template_part( ‘members/single/settings’ );

 // If nothing sticks, load a generic template
 else :
 bp_get_template_part( ‘members/single/plugins’ );

 endif;

 do_action( ‘bp_after_member_body’ ); ?>
如何为这两页设置“如果”条件?我不知道如何创建“bp\\u is\\u user\\u posts”或“bp\\u is\\u user\\u posts”函数。如果可以,我只需要添加…如果条件。

我甚至无法在bp文件上定义“bp\\u is\\u user\\u profile()”这些函数。它是如何工作的??

请给我建议!

谢谢pulla

2 个回复
最合适的回答,由SO网友:shanebp 整理而成

除非您愿意创建新组件,否则将内容注入到成员/单个/插件中会更容易、更快

function jv_user_posts() {
  add_action( \'bp_template_content\', \'jv_user_posts_content\' );
  bp_core_load_template( apply_filters( \'bp_core_template_plugin\', \'members/single/plugins\' ) );
}

function jv_user_posts_content() {
  echo "put content here";
}

SO网友:sharma chelluri

如何在Buddypress profile链接中使用用户帖子创建新选项卡?

1) 在主题目录下创建一个文件夹/buddypress/

2) 创建bp自定义。目录中的php文件。现在您的主题文件夹有一个结构-->

您的主题目录/buddypress/bp自定义。php

2.1包括bp自定义。主题函数中的php文件。php使用include或include_once php函数。

3) 创建三个操作以使选项卡正常工作(暂时不要做任何事情。只是解释理论)

add_action( \'bp_setup_nav\', \'buddyboss_child_bp_nav_adder\' );
add_action( \'bp_template_content\', \'profile_buddyboss_child_loop\' );
bp_core_load_template( apply_filters( \'bp_core_template_plugin\', \'members/single/plugins\' ) );
4)首先,您需要应用操作buddyboss_child_bp_nav_adder 到挂钩bp_setup_nav.

5) 函数定义如下所示。

    function buddyboss_child_bp_nav_adder() {
    global $bp;
    $post_count = count_user_posts_by_type( $bp->displayed_user->id );

    bp_core_new_nav_item(
      array(
        \'name\' => sprintf( __( \'Articles <span>%d</span>\', \'my-poems\' ), $post_count ),
        \'slug\' => \'Articles\',
        \'position\' => 250,
        \'show_for_displayed_user\' => true,
        \'screen_function\' => \'buddyboss_child_list\',
        \'item_css_id\' => \'articles\',
        \'default_subnav_slug\' => \'public\'
      ));
  }
6)上述功能的重要部分是screen_function 使用名称buddyboss_child_list

7) 创建名为的函数buddyboss_child_list

function buddyboss_child_list() {
        add_action( \'bp_template_content\', \'profile_buddyboss_child_loop\' );
        bp_core_load_template( apply_filters( \'bp_core_template_plugin\', \'members/single/plugins\' ) );
    }

The important filters and functions are ..
buddy Press filter ===>>> bp_template_content
buddyPress function to load template =>>> bp_core_load_template
8)为内容声明和定义新函数。在上面我们有profile_buddyboss_child_loop 函数获取数据。

/* This is end of the code for above function */
    function profile_buddyboss_child_loop() {
    $myposts = get_posts(  array(
      \'posts_per_page\' => -1,
      \'author\'         => bp_displayed_user_id(),
      \'post_type\'      => \'post\'
    ));
    if( ! empty($myposts) ) { 

      foreach($myposts as $post) {
            setup_postdata( $post );
            if (has_post_thumbnail( $post->ID ) ):
                $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'sidebar-smallthumbnew\' );
            else :
                $image[0] = "http://placehold.it/85x60";
            endif;
            echo \'<li class="sidebar mostpop post-\' . $post->ID . \'"><div id="postimage"><a href="\' . get_permalink($post->ID) . \'"><img src="\' . $image[0] . \'" /></a></div><div id="postinfo"><a href="\' . get_permalink($post->ID) . \'">\' . get_the_title($post->ID) . \'</a></div></li>\';
        }
        echo \'</ul>\';
        wp_reset_postdata();

     } else { ?>
    <div class="info" id="message">
         <p><strong><?php bp_displayed_user_fullname(); ?></strong> has No posts.</p>

    </div>
    <?php }
  }

  /* This is end of the code for above function */
9)要获取作者或用户的帖子数量,请在

function count_user_posts_by_type( $userid, $post_type = \'post\' ) {
            global $wpdb;
            $where = get_posts_by_author_sql( $post_type, true, $userid, true);
            $count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
            return apply_filters( \'get_usernumposts\', $count, $userid );
    }
就是这样。此时,您的个人资料页面将显示用户/作者页面以及他们自己的帖子。

结束