2015-12-15 2 views
2

Я добавил дополнительную страницу активности на мою страницу профиля, которая запрашивает связанного пользователя и возвращает их активность. Проблема в том, что я хочу записать это в функцию, так как часто будут другие области сайта, которые должны использовать этот же запрос.Цепочка пользовательской активности Buddypress и функция запроса

Вот запрос пользователя. Это просто запрос на сравнение, чтобы найти и вернуть идентификатор связанного пользователя.

global $bp, $wpdb; 
    $myid = $bp->loggedin_user->id; 
    $ourlink = $wpdb->get_var("SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = 'linkid' AND user_id = '$myid'"); 
    $partnerid = $wpdb->get_var("SELECT user_id from $wpdb->usermeta where meta_key='linkid' AND meta_value = '$ourlink' AND user_id != '$myid'"); 
    $partner = '&user_id=' . $partnerid; 

Которая затем используется в цикле деятельности.

<?php if (bp_has_activities(bp_ajax_querystring('activity') . $partner)) : ?> 

Однако, перезапись это как функция и затем вызов этой функции прямо перед циклом, хотя он все равно будет возвращать идентификатор, он больше не работает ради цикла активности.

Функция: (в WP файл functions.php)

function sw_partner_id() { 

    global $bp, $wpdb; 
    $myid = $bp->loggedin_user->id; 
    $ourlink = $wpdb->get_var("SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = 'linkid' AND user_id = '$myid'"); 
    $partnerid = $wpdb->get_var("SELECT user_id from $wpdb->usermeta where meta_key='linkid' AND meta_value = '$ourlink' AND user_id != '$myid'"); 
    $partner = '&user_id=' . $partnerid; 

    return $partner; 
} 

Вызов функции до цикла активности

<?php sw_partner_id(); ?> 
<?php if (bp_has_activities(bp_ajax_querystring('activity') . $partner)) : ?> 

Ошибка обновления: enter image description here enter image description here

ответ

1

Если вы хотите вызовите функцию внутри вашего файла functions.php, используя hooks.Пожалуйста, обратите внимание global bp в вашем коде, так как вы забыли добавить знак $.

Пример:

function sw_partner_id() { 

    global $bp, $wpdb; 
    $myid = $bp->loggedin_user->id; 
    $ourlink = $wpdb->get_var("SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = 'linkid' AND user_id = '$myid'"); 
    $partnerid = $wpdb->get_var("SELECT user_id from $wpdb->usermeta where meta_key='linkid' AND meta_value = '$ourlink' AND user_id != '$myid'"); 
    $partner = '&user_id=' . $partnerid; 

     return $partner; 
    } 
//sample hook 
add_action('admin_init','sw_partner_id'); 

После этого попробуйте вызвать функцию. Надеюсь, что это поможет.

+0

Спасибо за комментарий, но я также пробовал идти по этому маршруту без успеха. –

+0

@Charles У меня есть обновленный ответ, пожалуйста, обратите внимание на глобальный $ bp. А также, если ваш режим разработки попытается изменить wp-config debug на true, чтобы вы могли видеть ошибки. –

+0

Недостающий $ был просто ошибкой вставки. Debug выдает неопределенную переменную в строке цикла активности. –

Смежные вопросы