У меня есть 3 группы/раздела профиля на вкладке общего профиля Buddypress.
Я пытаюсь добавить собственный шорткод в первую группу, прямо под первой группой.
Это мой код:
add_action( 'bp_after_profile_loop_content', 'profile_choices_display' );
function profile_choices_display() {
if ( 1 == bp_get_the_profile_group_id()) {
echo do_shortcode( '[user-profile-choices]' );
}
}
Без фильтра bp_get_the_profile_group_id()
шорткод повторяется в каждой из 3 групп на этой странице.
Есть идеи, как этого добиться, чтобы он отображался только после первой группы?
Я не хочу, в идеале я хочу сохранить этот фильтр, но код с ним не работает.
Хук, который вы использовали, называется слишком поздно. Пытаться:
add_action( 'bp_after_profile_field_content', 'profile_choices_display' );
function profile_choices_display() {
if ( 'edit' !== bp_current_action() ) {
if ( 1 == bp_get_the_profile_group_id()) {
echo do_shortcode( '[user-profile-choices]' );
}
}
}
Именно то, что я искал, спасибо! Он рекламирует шорткод чуть ниже первой группы на странице domain.com/members/user
, чего я и хотел, но он также размещает шорткод на странице редактирования группы domain.com/members/user/profile/edit/group/1/
. Есть ли способ исключить его из показа на этой странице редактирования?
Я имею в виду, что я, вероятно, могу сделать это с помощью jQuery, но есть ли способ сделать это непосредственно из этой функции, чтобы она отображалась только в первой группе полей на странице профиля участника, но не на странице редактирования профиля?
См. редактирование по поводу bp_current_action
.
Почему вы хотите избежать использования
bp_get_the_profile_group_id()
?