0

メンバーページごとに、コンポーネントを選択できます (プロフィール、設定、アクティビティなど)。

私がやろうとしているのは、ジョブと呼ばれる新しいコンポーネントを各ページに追加することです。ナビゲーション バーにリンクを追加する方法を理解しました。私を混乱させているのは、ページを作成しているだけです。

新しいディレクトリを追加しますか?もしそうなら、どのようにバディプレスに知らせますか?

次のような URL 構造を持つ:

example.com/member/username/jobs 

は重要。

ありがとう!

4

1 に答える 1

3

グローバル変数$bpは、新しいJobsコンポーネントを挿入する場所です。グローバル変数$bpをダンプすることにより、すべてのコンポーネントを含む、それに含まれるすべての要素を確認できます。$ bpを簡単にダンプするには、member-header.phpの先頭に以下を追加します。

global $bp;
foreach ( (array)$bp as $key => $value ) {
    echo '<pre>';
    echo '<strong>' . $key . ': </strong><br />';
    print_r( $value );
    echo '</pre>';
}

コンポーネント'Jobs'を追加する$bp内の配列はbp_navです。

Functions.phpに以下を追加します。

add_action( 'bp_setup_nav', 'add_subnav_items', 100 ); //Priority must be higher than 10
function add_subnav_items() {
    global $bp;

    //Jobs tab
    $tab_array['name'] = 'Jobs';    
    $tab_array['link'] =  $bp->displayed_user->domain.'jobs';   
    $tab_array['slug'] = 'jobs';    
    $tab_array['parent_url'] = $bp->displayed_user->domain; 
    $tab_array['parent_slug'] = bp_core_get_userlink(bp_loggedin_user_id());    
    $tab_array['css_id'] = 'jobs';  
    $tab_array['position'] = 100;   
    $tab_array['user_has_access'] = '1';    
    $tab_array['screen_function'] = 'bp_jobs_screen_general';   

    $bp->bp_nav['jobs'] = $tab_array;  //Add new array element to the 'bp_nav' array
}

'screen_function'は、'Jobs'タブが選択されたときに表示される画面を処理する関数であるため、functions.phpに関数'bp_jobs_screen_general'を追加する必要があります。

function bp_jobs_screen_general() {
    bp_core_load_template( apply_filters( 'bp_jobs_screen_general','members/single/jobs' ) );
}

この関数は、members / single /でjobs.phpという名前のテンプレートファイルを探すため、作成する必要があります。screen_functionの動作例については、wp-content / plugins / buddypress / bp-groups/bp-groups-screens.php内のグループ画面を表示するための関数を参照してください。

于 2013-03-02T03:54:04.770 に答える