Подписка на пост

Добрый день! Хотел бы спросить может кто уже сталкивался и находил решение. Уже четыре часа обыскивая гугл не могу найти, есть ли возможность у ВП или БП выводить список пользователей подписанных на какой-то определенный пост на странице!

Типо: Новость один -> У нее есть кнопка подписаться на данную новость -> А ниже список пользователей которые на нее подписались.

Все вопросы в гугле выбрасывают меня на формы подписок по EMAIL для рассылок, а я имею ввиду конкретно на определенный пост или страницу

Добавить Комментарий

    Скажите с помощью чего реализована кнопка подписаться?

    Ее нет(  Я к примеру писал как это должно выглядеть, я думаю есть какой то плагин или типо того

    в 04.06.2016.

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

    в 04.06.2016.

    Систему лайков определенного поста тоже по идее подписка http://www.themezilla.com/plugins/zillalikes/ реализована этим плагином!

    в 04.06.2016.

    Так как вы собирались выводить, если пользователи еще не подписываются? Сперва определитесь в реализацией функционала подписки. Вот ту например реализован функционал «Мне нравится»: http://onwp.ru/question/kak-sdelat-svoyu-knopku-mne-nravitsyaili-1-bez-plagina

    Из которого будет легко получить список пользователей. Но не функционала отписаться.

    в 04.06.2016.

    Все я Вас понял. Я это практически и имел ввиду по функционалу подписки и спрашивал какие есть возможности его реализации

    в 04.06.2016.

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

    в 05.06.2016.

    Делаю сайт с мероприятиями и мне нужно на странице мероприятия создать две кнопки «Я пойду | Возможно пойду» и потом выводить список пользователей кто куда нажал. Делаю связку с BuddyPress. Решили упростить но по логике одно и тоже выходит(

    в 05.06.2016.
    Добавить Комментарий

    Нашел плагин WP Favorite Posts он удачно справился с задачой кнопки подписки и отображения в профиля пользователя нужных постов  (в моем случае кнопка я пойду на мероприятие) Правда он делает это с помощью кукис был бы какой нибудь аналогичный плагин под BudyyPress было бы замечательно. Вот теперь как вывести тех кто нажал на кнопку?

    Что типо проверки если user_id нажал добавил в любимые (сказал пойду) то показывать его граватар в списке. Это возможно?

    Я думаю плагин записывает к посту тех пользователей которые нажали на кнопку. Сделайте var_dump() всех произвольных полей поста, где был сделана подписка. И посмотрите хранит ли пользователей таким образом плагин. Если да, то вы будите знать откуда получить список пользователей.

    в 05.06.2016.

    Плагин возвращает NULL точнее кнопка! Но я полагаю что все равно оно попадает в базу данных в описание плагина написано если пользователь авторизирован то нажатие на кнопку попадает в базу данных. Теперь как оттуда это вытащить ахаха)

    в 06.06.2016.

    «Сделайте var_dump() всех произвольных полей поста» — не имеет отношения к плагину.

    Найдите id поста в котором была нажата кнопка подписки, и выполните код:

    
    $metas = get_post_meta( $post->ID ); // $post->ID - id поста
    var_dump($metas);
    
    

    И поискать в результате есть ли нужные поля. Можете даже вар дам сюда прислать я посмотрю.

    в 06.06.2016.

     

    Вот выдача

     

    array(29) { [«_edit_lock»]=> array(1) { [0]=> string(12) «1465205072:1» } [«_edit_last»]=> array(1) { [0]=> string(1) «1» } [«glg_meta_options»]=> array(1) { [0]=> string(3) «yes» } [«icp_meta_options»]=> array(1) { [0]=> string(3) «yes» } [«events_name»]=> array(1) { [0]=> string(13) «Test party #1» } [«_events_name»]=> array(1) { [0]=> string(19) «field_573bf6c674198» } [«events_logo»]=> array(1) { [0]=> string(2) «84» } [«_events_logo»]=> array(1) { [0]=> string(19) «field_574fefe478951» } [«events_discount»]=> array(1) { [0]=> string(47) «All whisky only 5 kuai Only Adults  » } [«_events_discount»]=> array(1) { [0]=> string(19) «field_574ff00335aff» } [«events_place»]=> array(1) { [0]=> string(18) «Wuchang/Super club» } [«_events_place»]=> array(1) { [0]=> string(19) «field_574ff03235b00» } [«events_type»]=> array(1) { [0]=> string(10) «HTML NIGHT» } [«_events_type»]=> array(1) { [0]=> string(19) «field_574ff05f4dad9» } [«events_setings»]=> array(1) { [0]=> string(32) «Only adult Only who know html» } [«_events_setings»]=> array(1) { [0]=> string(19) «field_574ff0844dada» } [«events_data»]=> array(1) { [0]=> string(9) «Wed/15/06» } [«_events_data»]=> array(1) { [0]=> string(19) «field_574ff0b84dadb» } [«events_time»]=> array(1) { [0]=> string(5) «21:00» } [«_events_time»]=> array(1) { [0]=> string(19) «field_574ff0f0dd2f8» } [«_thumbnail_id»]=> array(1) { [0]=> string(3) «194» } [«slider_shorcode»]=> array(1) { [0]=> string(23) «[huge_it_slider id=»1″]» } [«_slider_shorcode»]=> array(1) { [0]=> string(19) «field_57524486db2e1» } [«events_map»]=> array(1) { [0]=> string(15) «[bmap id=»184″]» } [«_events_map»]=> array(1) { [0]=> string(19) «field_57527361fd784» } [«_zilla_likes»]=> array(1) { [0]=> string(1) «1» } [«voted_IP»]=> array(1) { [0]=> string(41) «a:1:{s:14:»192.240.127.98″;i:1465111936;}» } [«votes_count»]=> array(1) { [0]=> string(1) «2» } [«wpfp_favorites»]=> array(1) { [0]=> string(1) «1» }

    в 06.06.2016.

    Как я понял плагин хранит количество подписчиков.

    попробуйте еще сделать:

    
    $metas = get_user_meta( $user_id ); // $user_id - id пользователя который подписался на что то
    var_dump($metas);
    
    
    в 06.06.2016.

    Вот нашел в первой строчке показывает!

     

    array(24) { [«nickname»]=> array(1) { [0]=> string(5) «Timur» } [«first_name»]=> array(1) { [0]=> string(5) «Timur» } [«last_name»]=> array(1) { [0]=> string(0) «» }

    [«description»]=> array(1) { [0]=> string(0) «» } [«rich_editing»]=> array(1) { [0]=> string(4) «true» } [«comment_shortcuts»]=> array(1) { [0]=> string(5) «false» } [«admin_color»]=> array(1) { [0]=> string(5) «fresh» } [«use_ssl»]=> array(1) { [0]=> string(1) «0» } [«show_admin_bar_front»]=> array(1) { [0]=> string(5) «false» } [«bp_xprofile_visibility_levels»]=> array(1) { [0]=> string(57) «a:3:{i:1;s:6:»public»;i:2;s:6:»public»;i:3;s:6:»public»;}» } [«wp_capabilities»]=> array(1) { [0]=> string(31) «a:1:{s:13:»administrator»;b:1;}» } [«wp_user_level»]=> array(1) { [0]=> string(2) «10» } [«last_activity»]=> array(1) { [0]=> string(19) «2016-06-07 04:25:59» } [«closedpostboxes_dashboard»]=> array(1) { [0]=> string(6) «a:0:{}» } [«metaboxhidden_dashboard»]=> array(1) { [0]=> string(6) «a:0:{}» } [«wp_dashboard_quick_press_last_post_id»]=> array(1) { [0]=> string(3) «285» } [«wp_user-settings»]=> array(1) { [0]=> string(21) «libraryContent=browse» } [«wp_user-settings-time»]=> array(1) { [0]=> string(10) «1463628178» } [«nav_menu_recently_edited»]=> array(1) { [0]=> string(2) «18» } [«managenav-menuscolumnshidden»]=> array(1) { [0]=> string(116) «a:5:{i:0;s:11:»link-target»;i:1;s:11:»css-classes»;i:2;s:3:»xfn»;i:3;s:11:»description»;i:4;s:15:»title-attribute»;}» } [«metaboxhidden_nav-menus»]=> array(1) { [0]=> string(92) «a:3:{i:0;s:23:»add-buddypress-nav-menu»;i:1;s:12:»add-post_tag»;i:2;s:15:»add-post_format»;}» } [«session_tokens»]=> array(1) { [0]=> string(1521) «a:5:{s:64:»f6ee3e6bdb06b2e61eb14d9659793ffe3c519201e13dc4af2661964ff07b6f33″;a:4:{s:10:»expiration»;i:1465366286;s:2:»ip»;s:13:»96.44.130.237″;s:2:»ua»;s:121:»Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36″;s:5:»login»;i:1465193486;}s:64:»b4ceec8ca01e84ffb190dea9cf02b848f376ac6ffeeb4878aaf42f5b2d47e1be»;a:4:{s:10:»expiration»;i:1466403088;s:2:»ip»;s:13:»96.44.130.237″;s:2:»ua»;s:121:»Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36″;s:5:»login»;i:1465193488;}s:64:»2308205f05fa7c7799f20f5fb9433dca937b42744016aaba3dcb25befb92c85f»;a:4:{s:10:»expiration»;i:1465366357;s:2:»ip»;s:13:»96.44.130.237″;s:2:»ua»;s:121:»Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36″;s:5:»login»;i:1465193557;}s:64:»58f963d951a21edf705d52e169f297449ace07791f7658e265c3ffc6e8556835″;a:4:{s:10:»expiration»;i:1465366362;s:2:»ip»;s:13:»96.44.130.237″;s:2:»ua»;s:121:»Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36″;s:5:»login»;i:1465193562;}s:64:»fd64ff8697d5de72075ceac1c2e14678fc05d31878dd80d478155862766a0a48″;a:4:{s:10:»expiration»;i:1465445618;s:2:»ip»;s:13:»59.174.75.153″;s:2:»ua»;s:121:»Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36″;s:5:»login»;i:1465272818;}}» } [«total_friend_count»]=> array(1) { [0]=> string(1) «2» } [«wpfp_favorites»]=> array(1) { [0]=> string(20) «a:1:{i:0;s:3:»232″;}» } }

    в 07.06.2016.

    Скажите id поста на который был подписан пользователь Timur?

    в 07.06.2016.

    232

    в 07.06.2016.

    Попробуйте вариант ниже..

    в 07.06.2016.
    Добавить Комментарий

    Попробуйте такой вариант:

    Вставить в functions.php

     // код в functions.php
     function __favorites($id_post) {
     global $wpdb;
     $users = $wpdb->get_blog_prefix() . 'users';
     $user_meta = $wpdb->get_blog_prefix() . 'usermeta';
     // делаем запрос
     $favorites = $wpdb->get_results("SELECT ID FROM {$users} LEFT OUTER JOIN {$user_meta} ON {$user_meta}.user_id = {$users}.ID
     WHERE {$user_meta}.meta_key = 'wpfp_favorites' AND {$user_meta}.meta_value LIKE '%{$id_post}%'", ARRAY_A);
    return $favorites;
     }
    function onwp_get_favorites($id_post) {
     $users = __favorites($id_post);
     if (!empty($users)) {
     foreach ($users as $value) {
     $user_data = get_userdata($value['ID']);
     echo '<p>' . $user_data->user_login . '</p>';
     }
     } else {
     echo 'Пользователей не найдено...';
     }
     }
    

    Вызвать в посте:

     // вызываем в посте
     onwp_get_favorites(get_the_ID());
     

    Не лучшее решение, слабое место  -это поиск в сериализованном массиве ( LIKE ‘%{$id_post}%’).

    Отлично сработало! А что бы появился аватар из buddypress?
    echo ‘<p>’ . $user_data->user_login . ‘</p>’;  вместо user_login get_avatar Добавить?

    в 08.06.2016.

    Прошу прощения. Неудобно у Вас спрашивать, но вывести не удалось автарки. На странице где хотел вывести вставлял не вышло, добавил его в функцию и сделал эхо $url тоже не помогло. Передал в не го  onwp_get_favorites(get_the_ID()); тоже не откликнулось.

    
    $url = bp_core_fetch_avatar(array('item_id' => $user->ID));
    
    
    в 09.06.2016.
    
    function onwp_get_favorites($id_post) {
    $users = __favorites($id_post);
    if (!empty($users)) {
    foreach ($users as $value) {
    $user_data = get_userdata($value['ID']);
    echo '<p>' . $user_data->user_login . '</p>';
    echo '<img src="'.bp_core_fetch_avatar(array('item_id' => $value['ID']));.'" />';
    }
    } else {
    echo 'Пользователей не найдено...';
    }
    }
    
    
    в 09.06.2016.

    Спасибо Вам огромное! Можно ли отблагодарить Вас и Ваш проект?

    в 09.06.2016.

    Такой вариант будет чуток вернее я

    function onwp_get_favorites($id_post) { $users = __favorites($id_post); if (!empty($users)) { foreach ($users as $value) { $user_data = get_userdata($value['ID']); echo bp_core_fetch_avatar(array('item_id' => $value['ID']));  // без в HTML тегов echo '<p>' . $user_data->user_nicename . '</p>'; } } else { echo 'Пользователей не найдено...'; } }
    в 09.06.2016.

    Я наверное уже достал, но можно я Вас последний раз побескою:

    С помощью шорткода который прилагается в данном плагине я смог вывести у каждого пользователя в профиле список любимых постов и все бы хорошо, но вот если я собрал список своих любимых постов, потом зашел к себе в профиль и он там выводится. Но если я зайду к другому человеку в профиль там тоже будет выводиться мой список любимых постов. Если ли возможность выводить список каждого пользователя в его профиле?

    в 09.06.2016.

    По названию шорткода сделайте поиск в плагине. Найти код шорткода. в коде скорее всего будет использоваться переменная которая определяет id пользователя(авторизованного). А вам  нужно id просматриваемого.

    Основные функции buddypress.

    http://onwp.ru/question/chasto-ispolzuemye-funkcii-buddypress

     

    Ваша активность на сайте и желание поделиться знаниями — будет лучшей благодарностью.

    в 09.06.2016.
    <?php
    
    /*
    
    Plugin Name: WP Favorite Posts
    
    Plugin URI: https://github.com/hberberoglu/wp-favorite-posts
    
    Description: Allows users to add favorite posts. This plugin use cookies for saving data so unregistered users can favorite a post. Put <code>&lt;?php wpfp_link(); ?&gt;</code> where ever you want on a single post. Then create a page which includes that text : <code>[wp-favorite-posts]</code> That's it!
    
    Version: 1.6.6
    
    Author: Huseyin Berberoglu
    
    Author URI: https://github.com/hberberoglu
    */
    /*
    
    Copyright (c) 2009 Hüseyin Berberoğlu (hberberoglu@gmail.com)
    This program is free software: you can redistribute it and/or modify
    
    it under the terms of the GNU General Public License as published by
    
    the Free Software Foundation, either version 3 of the License, or
    
    (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    
    along with this program. If not, see <http://www.gnu.org/licenses/>.
    */
    define('WPFP_PATH', plugins_url() . '/wp-favorite-posts');
    
    define('WPFP_META_KEY', "wpfp_favorites");
    
    define('WPFP_USER_OPTION_KEY', "wpfp_useroptions");
    
    define('WPFP_COOKIE_KEY', "wp-favorite-posts");
    // manage default privacy of users favorite post lists by adding this constant to wp-config.php
    
    if ( !defined( 'WPFP_DEFAULT_PRIVACY_SETTING' ) )
    
    define( 'WPFP_DEFAULT_PRIVACY_SETTING', false );
    $ajax_mode = 1;
    function wpfp_load_translation() {
    
    load_plugin_textdomain(
    
    "wp-favorite-posts",
    
    false,
    
    dirname(plugin_basename(__FILE__)).'/lang'
    
    );
    
    }
    add_action( 'plugins_loaded', 'wpfp_load_translation' );
    function wp_favorite_posts() {
    
    if (isset($_REQUEST['wpfpaction'])):
    
    global $ajax_mode;
    
    $ajax_mode = isset($_REQUEST['ajax']) ? $_REQUEST['ajax'] : false;
    
    if ($_REQUEST['wpfpaction'] == 'add') {
    
    wpfp_add_favorite();
    
    } else if ($_REQUEST['wpfpaction'] == 'remove') {
    
    wpfp_remove_favorite();
    
    } else if ($_REQUEST['wpfpaction'] == 'clear') {
    
    if (wpfp_clear_favorites()) wpfp_die_or_go(wpfp_get_option('cleared'));
    
    else wpfp_die_or_go("ERROR");
    
    }
    
    endif;
    
    }
    
    add_action('wp_loaded', 'wp_favorite_posts');
    function wpfp_add_favorite($post_id = "") {
    
    if ( empty($post_id) ) $post_id = $_REQUEST['postid'];
    
    if (wpfp_get_option('opt_only_registered') && !is_user_logged_in() ) {
    
    wpfp_die_or_go(wpfp_get_option('text_only_registered') );
    
    return false;
    
    }
    if (wpfp_do_add_to_list($post_id)) {
    
    // added, now?
    
    do_action('wpfp_after_add', $post_id);
    
    if (wpfp_get_option('statistics')) wpfp_update_post_meta($post_id, 1);
    
    if (wpfp_get_option('added') == 'show remove link') {
    
    $str = wpfp_link(1, "remove", 0, array( 'post_id' => $post_id ) );
    
    wpfp_die_or_go($str);
    
    } else {
    
    wpfp_die_or_go(wpfp_get_option('added'));
    
    }
    
    }
    
    }
    
    function wpfp_do_add_to_list($post_id) {
    
    if (wpfp_check_favorited($post_id))
    
    return false;
    
    if (is_user_logged_in()) {
    
    return wpfp_add_to_usermeta($post_id);
    
    } else {
    
    return wpfp_set_cookie($post_id, "added");
    
    }
    
    }
    function wpfp_remove_favorite($post_id = "") {
    
    if (empty($post_id)) $post_id = $_REQUEST['postid'];
    
    if (wpfp_do_remove_favorite($post_id)) {
    
    // removed, now?
    
    do_action('wpfp_after_remove', $post_id);
    
    if (wpfp_get_option('statistics')) wpfp_update_post_meta($post_id, -1);
    
    if (wpfp_get_option('removed') == 'show add link') {
    
    if ( isset($_REQUEST['page']) && $_REQUEST['page'] == 1 ):
    
    $str = '';
    
    else:
    
    $str = wpfp_link(1, "add", 0, array( 'post_id' => $post_id ) );
    
    endif;
    
    wpfp_die_or_go($str);
    
    } else {
    
    wpfp_die_or_go(wpfp_get_option('removed'));
    
    }
    
    }
    
    else return false;
    
    }
    function wpfp_die_or_go($str) {
    
    global $ajax_mode;
    
    if ($ajax_mode):
    
    die($str);
    
    else:
    
    wp_redirect($_SERVER['HTTP_REFERER']);
    
    endif;
    
    }
    function wpfp_add_to_usermeta($post_id) {
    
    $wpfp_favorites = wpfp_get_user_meta();
    
    $wpfp_favorites[] = $post_id;
    
    wpfp_update_user_meta($wpfp_favorites);
    
    return true;
    
    }
    function wpfp_check_favorited($cid) {
    
    if (is_user_logged_in()) {
    
    $favorite_post_ids = wpfp_get_user_meta();
    
    if ($favorite_post_ids)
    
    foreach ($favorite_post_ids as $fpost_id)
    
    if ($fpost_id == $cid) return true;
    
    } else {
    
    if (wpfp_get_cookie()):
    
    foreach (wpfp_get_cookie() as $fpost_id => $val)
    
    if ($fpost_id == $cid) return true;
    
    endif;
    
    }
    
    return false;
    
    }
    function wpfp_link( $return = 0, $action = "", $show_span = 1, $args = array() ) {
    
    global $post;
    
    //print_r($post);
    
    $post_id = &$post->ID;
    
    extract($args);
    
    $str = "";
    
    if ($show_span)
    
    $str = "<div class='button_out'>";
    
    $str .= wpfp_before_link_img();
    
    $str .= wpfp_loading_img();
    
    if ($action == "remove"):
    
    $str .= wpfp_link_html($post_id, wpfp_get_option('remove_favorite'), "remove");
    
    elseif ($action == "add"):
    
    $str .= wpfp_link_html($post_id, wpfp_get_option('add_favorite'), "add");
    
    elseif (wpfp_check_favorited($post_id)):
    
    $str .= wpfp_link_html($post_id, wpfp_get_option('remove_favorite'), "remove");
    
    else:
    
    $str .= wpfp_link_html($post_id, wpfp_get_option('add_favorite'), "add");
    
    endif;
    
    if ($show_span)
    
    $str .= "</div>";
    
    if ($return) { return $str; } else { echo $str; }
    
    }
    function wpfp_link_html($post_id, $opt, $action) {
    
    $link = "<a class='willgo_button' href='?wpfpaction=".$action."&amp;postid=". esc_attr($post_id) . "' title='". $opt ."' rel='nofollow'>". $opt ."</a>";
    
    $link = apply_filters( 'wpfp_link_html', $link );
    
    return $link;
    
    }
    function wpfp_get_users_favorites($user = "") {
    
    $favorite_post_ids = array();
    if (!empty($user)):
    
    return wpfp_get_user_meta($user);
    
    endif;
    # collect favorites from cookie and if user is logged in from database.
    
    if (is_user_logged_in()):
    
    $favorite_post_ids = wpfp_get_user_meta();
    
    else:
    
    if (wpfp_get_cookie()):
    
    foreach (wpfp_get_cookie() as $post_id => $post_title) {
    
    array_push($favorite_post_ids, $post_id);
    
    }
    
    endif;
    
    endif;
    
    return $favorite_post_ids;
    
    }
    function wpfp_list_favorite_posts( $args = array() ) {
    
    $user = isset($_REQUEST['user']) ? $_REQUEST['user'] : "";
    
    extract($args);
    
    global $favorite_post_ids;
    
    if ( !empty($user) ) {
    
    if ( wpfp_is_user_favlist_public($user) )
    
    $favorite_post_ids = wpfp_get_users_favorites($user);
    } else {
    
    $favorite_post_ids = wpfp_get_users_favorites();
    
    }
    if ( @file_exists(TEMPLATEPATH.'/wpfp-page-template.php') || @file_exists(STYLESHEETPATH.'/wpfp-page-template.php') ):
    
    if(@file_exists(TEMPLATEPATH.'/wpfp-page-template.php')) :
    
    include(TEMPLATEPATH.'/wpfp-page-template.php');
    
    else :
    
    include(STYLESHEETPATH.'/wpfp-page-template.php');
    
    endif;
    
    else:
    
    include("wpfp-page-template.php");
    
    endif;
    
    }
    function wpfp_list_most_favorited($limit=5) {
    
    global $wpdb;
    
    $query = "SELECT post_id, meta_value, post_status FROM $wpdb->postmeta";
    
    $query .= " LEFT JOIN $wpdb->posts ON post_id=$wpdb->posts.ID";
    
    $query .= " WHERE post_status='publish' AND meta_key='".WPFP_META_KEY."' AND meta_value > 0 ORDER BY ROUND(meta_value) DESC LIMIT 0, $limit";
    
    $results = $wpdb->get_results($query);
    
    if ($results) {
    
    echo "<ul>";
    
    foreach ($results as $o):
    
    $p = get_post($o->post_id);
    
    echo "<li>";
    
    echo "<a href='".get_permalink($o->post_id)."' title='". $p->post_title ."'>" . $p->post_title . "</a> ($o->meta_value)";
    
    echo "</li>";
    
    endforeach;
    
    echo "</ul>";
    
    }
    
    }
    include("wpfp-widgets.php");
    function wpfp_loading_img() {
    
    return "<img src='".WPFP_PATH."/img/loading.gif' alt='Loading' title='Loading' class='wpfp-hide wpfp-img' />";
    
    }
    function wpfp_before_link_img() {
    
    $options = wpfp_get_options();
    
    $option = $options['before_image'];
    
    if ($option == '') {
    
    return "";
    
    } else if ($option == 'custom') {
    
    return "<img src='" . $options['custom_before_image'] . "' alt='Favorite' title='Favorite' class='wpfp-img' />";
    
    } else {
    
    return "<img src='". WPFP_PATH . "/img/" . $option . "' alt='Favorite' title='Favorite' class='wpfp-img' />";
    
    }
    
    }
    function wpfp_clear_favorites() {
    
    if (wpfp_get_cookie()):
    
    foreach (wpfp_get_cookie() as $post_id => $val) {
    
    wpfp_set_cookie($post_id, "");
    
    wpfp_update_post_meta($post_id, -1);
    
    }
    
    endif;
    
    if (is_user_logged_in()) {
    
    $favorite_post_ids = wpfp_get_user_meta();
    
    if ($favorite_post_ids):
    
    foreach ($favorite_post_ids as $post_id) {
    
    wpfp_update_post_meta($post_id, -1);
    
    }
    
    endif;
    
    if (!delete_user_meta(wpfp_get_user_id(), WPFP_META_KEY)) {
    
    return false;
    
    }
    
    }
    
    return true;
    
    }
    function wpfp_do_remove_favorite($post_id) {
    
    if (!wpfp_check_favorited($post_id))
    
    return true;
    $a = true;
    
    if (is_user_logged_in()) {
    
    $user_favorites = wpfp_get_user_meta();
    
    $user_favorites = array_diff($user_favorites, array($post_id));
    
    $user_favorites = array_values($user_favorites);
    
    $a = wpfp_update_user_meta($user_favorites);
    
    }
    
    if ($a) $a = wpfp_set_cookie($_REQUEST['postid'], "");
    
    return $a;
    
    }
    function wpfp_content_filter($content) {
    
    if (is_page()):
    
    if (strpos($content,'{{wp-favorite-posts}}')!== false) {
    
    $content = str_replace('{{wp-favorite-posts}}', wpfp_list_favorite_posts(), $content);
    
    }
    
    endif;
    if (strpos($content,'[wpfp-link]')!== false) {
    
    $content = str_replace('[wpfp-link]', wpfp_link(1), $content);
    
    }
    if (is_single()) {
    
    if (wpfp_get_option('autoshow') == 'before') {
    
    $content = wpfp_link(1) . $content;
    
    } else if (wpfp_get_option('autoshow') == 'after') {
    
    $content .= wpfp_link(1);
    
    }
    
    }
    
    return $content;
    
    }
    
    add_filter('the_content','wpfp_content_filter');
    function wpfp_shortcode_func() {
    
    wpfp_list_favorite_posts();
    
    }
    
    add_shortcode('wp-favorite-posts', 'wpfp_shortcode_func');
    
    function wpfp_add_js_script() {
    
    if (!wpfp_get_option('dont_load_js_file'))
    
    wp_enqueue_script( "wp-favorite-posts", WPFP_PATH . "/wpfp.js", array( 'jquery' ) );
    
    }
    
    add_action('wp_print_scripts', 'wpfp_add_js_script');
    function wpfp_wp_print_styles() {
    
    if (!wpfp_get_option('dont_load_css_file'))
    
    echo "<link rel='stylesheet' id='wpfp-css' href='" . WPFP_PATH . "/wpfp.css' type='text/css' />" . "\n";
    
    }
    
    add_action('wp_print_styles', 'wpfp_wp_print_styles');
    function wpfp_init() {
    
    $wpfp_options = array();
    
    $wpfp_options['add_favorite'] = "Add to favorites";
    
    $wpfp_options['added'] = "Added to favorites!";
    
    $wpfp_options['remove_favorite'] = "Remove from favorites";
    
    $wpfp_options['removed'] = "Removed from favorites!";
    
    $wpfp_options['clear'] = "Clear favorites";
    
    $wpfp_options['cleared'] = "<p>Favorites cleared!</p>";
    
    $wpfp_options['favorites_empty'] = "Favorite list is empty.";
    
    $wpfp_options['cookie_warning'] = "Your favorite posts saved to your browsers cookies. If you clear cookies also favorite posts will be deleted.";
    
    $wpfp_options['rem'] = "remove";
    
    $wpfp_options['text_only_registered'] = "Only registered users can favorite!";
    
    $wpfp_options['statistics'] = 1;
    
    $wpfp_options['widget_title'] = '';
    
    $wpfp_options['widget_limit'] = 5;
    
    $wpfp_options['uf_widget_limit'] = 5;
    
    $wpfp_options['before_image'] = 'star.png';
    
    $wpfp_options['custom_before_image'] = '';
    
    $wpfp_options['dont_load_js_file'] = 0;
    
    $wpfp_options['dont_load_css_file'] = 0;
    
    $wpfp_options['post_per_page'] = 20;
    
    $wpfp_options['autoshow'] = '';
    
    $wpfp_options['opt_only_registered'] = 0;
    
    add_option('wpfp_options', $wpfp_options);
    
    }
    
    add_action('activate_wp-favorite-posts/wp-favorite-posts.php', 'wpfp_init');
    function wpfp_config() { include('wpfp-admin.php'); }
    function wpfp_config_page() {
    
    if ( function_exists('add_submenu_page') )
    
    add_options_page(__('WP Favorite Posts'), __('WP Favorite Posts'), 'manage_options', 'wp-favorite-posts', 'wpfp_config');
    
    }
    
    add_action('admin_menu', 'wpfp_config_page');
    function wpfp_update_user_meta($arr) {
    
    return update_user_meta(wpfp_get_user_id(),WPFP_META_KEY,$arr);
    
    }
    function wpfp_update_post_meta($post_id, $val) {
    
    $oldval = wpfp_get_post_meta($post_id);
    
    if ($val == -1 && $oldval == 0) {
    
    $val = 0;
    
    } else {
    
    $val = $oldval + $val;
    
    }
    
    return add_post_meta($post_id, WPFP_META_KEY, $val, true) or update_post_meta($post_id, WPFP_META_KEY, $val);
    
    }
    function wpfp_delete_post_meta($post_id) {
    
    return delete_post_meta($post_id, WPFP_META_KEY);
    
    }
    function wpfp_get_cookie() {
    
    if (!isset($_COOKIE[WPFP_COOKIE_KEY])) return;
    
    return $_COOKIE[WPFP_COOKIE_KEY];
    
    }
    function wpfp_get_options() {
    
    return get_option('wpfp_options');
    
    }
    function wpfp_get_user_id() {
    
    global $current_user;
    
    get_currentuserinfo();
    
    return $current_user->ID;
    
    }
    function wpfp_get_user_meta($user = "") {
    
    if (!empty($user)):
    
    $userdata = get_user_by( 'login', $user );
    
    $user_id = $userdata->ID;
    
    return get_user_meta($user_id, WPFP_META_KEY, true);
    
    else:
    
    return get_user_meta(wpfp_get_user_id(), WPFP_META_KEY, true);
    
    endif;
    
    }
    function wpfp_get_post_meta($post_id) {
    
    $val = get_post_meta($post_id, WPFP_META_KEY, true);
    
    if ($val < 0) $val = 0;
    
    return $val;
    
    }
    function wpfp_set_cookie($post_id, $str) {
    
    $expire = time()+60*60*24*30;
    
    return setcookie("wp-favorite-posts[$post_id]", $str, $expire, "/");
    
    }
    function wpfp_is_user_favlist_public($user) {
    
    $user_opts = wpfp_get_user_options($user);
    
    if (empty($user_opts)) return WPFP_DEFAULT_PRIVACY_SETTING;
    
    if ($user_opts["is_wpfp_list_public"])
    
    return true;
    
    else
    
    return false;
    
    }
    function wpfp_get_user_options($user) {
    
    $userdata = get_user_by( 'login', $user );
    
    $user_id = $userdata->ID;
    
    return get_user_meta($user_id, WPFP_USER_OPTION_KEY, true);
    
    }
    function wpfp_is_user_can_edit() {
    
    if (isset($_REQUEST['user']) && $_REQUEST['user'])
    
    return false;
    
    return true;
    
    }
    function wpfp_remove_favorite_link($post_id) {
    
    if (wpfp_is_user_can_edit()) {
    
    $wpfp_options = wpfp_get_options();
    
    $class = 'wpfp-link remove-parent';
    
    $link = "<a id='rem_$post_id' class='$class' href='?wpfpaction=remove&amp;page=1&amp;postid=". $post_id ."' title='".wpfp_get_option('rem')."' rel='nofollow'>".wpfp_get_option('rem')."</a>";
    
    $link = apply_filters( 'wpfp_remove_favorite_link', $link );
    
    echo $link;
    
    }
    
    }
    function wpfp_clear_list_link() {
    
    if (wpfp_is_user_can_edit()) {
    
    $wpfp_options = wpfp_get_options();
    
    echo wpfp_before_link_img();
    
    echo wpfp_loading_img();
    
    echo "<a href='?wpfpaction=clear' rel='nofollow'>". wpfp_get_option('clear') . "</a>";
    
    }
    
    }
    function wpfp_cookie_warning() {
    
    if (!is_user_logged_in() && !isset($_GET['user']) ):
    
    echo "<p>".wpfp_get_option('cookie_warning')."</p>";
    
    endif;
    
    }
    function wpfp_get_option($opt) {
    
    $wpfp_options = wpfp_get_options();
    
    return htmlspecialchars_decode( stripslashes ( $wpfp_options[$opt] ) );
    
    }
    
    
    в 14.06.2016.

    Не смог найти про то что вы говорили (((

    в 14.06.2016.
    Добавить Комментарий

    Там вроде используются стандартные от ВП опеределения, а не от БП

    В плагине «WP Favorite Posts» — не один файл .php

    В других нужно поискать ваш шорткод.

    Например если вы использовали шорткод [wp-favorite-posts]

    то в файле wp-favorite-posts.php в строке 198, 199 передается id пользователя.

    для просмотра в чужом профиле нужно вместо id использовать функции BP: bp_displayed_user_id()

    http://onwp.ru/question/chasto-ispolzuemye-funkcii-buddypress

    в 15.06.2016.

    Было

    function wpfp_list_favorite_posts( $args = array() ) {
    
    $user = isset($_REQUEST['user']) ? $_REQUEST['user'] : "";
    
    extract($args);
    
    global $favorite_post_ids;
    
    if ( !empty($user) ) {
    
    if ( wpfp_is_user_favlist_public($user) )
    
    $favorite_post_ids = wpfp_get_users_favorites($user);
    } else {
    
    $favorite_post_ids = wpfp_get_users_favorites();
    
    }
    if ( @file_exists(TEMPLATEPATH.'/wpfp-page-template.php') || @file_exists(STYLESHEETPATH.'/wpfp-page-template.php') ):
    
    if(@file_exists(TEMPLATEPATH.'/wpfp-page-template.php')) :
    
    include(TEMPLATEPATH.'/wpfp-page-template.php');
    
    else :
    
    include(STYLESHEETPATH.'/wpfp-page-template.php');
    
    endif;
    
    else:
    
    include("wpfp-page-template.php");
    
    endif;
    
    }
    
    

     

    Вот тут заменил

    
    function wpfp_list_favorite_posts( $args = array() ) {
    
    $user = bp_displayed_user_id();
    
    extract($args);
    
    

    При этом он стал выдавать ошибку this list is not public EMPTY LIST

    Я полагаю тут есть проверка скрывать лист или нет!

    в 17.06.2016.

    Может этот плагин в принципе не может такое?

    в 19.06.2016.

    А если попробывать этот код?

     

    <?php
     $curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));
    	global $current_user;
        get_currentuserinfo();
    	$meta_query = mysql_query("
    		SELECT distinct($wpdb->usermeta.meta_value) FROM
    		$wpdb->posts,  $wpdb->postmeta, $wpdb->users, $wpdb->usermeta
    		WHERE $wpdb->postmeta.post_id = $wpdb->posts.id
    		AND $wpdb->usermeta.user_id = $wpdb->users.id
    		AND $wpdb->postmeta.meta_key = 'wpfp_favorites'
    				AND $wpdb->users.id = '".$curauth->ID."'");
    
    	while($array_meta = mysql_fetch_array($meta_query))
    	{
    		$meta = explode('"',$array_meta['meta_value']);
    	}
    
    	class IndexFilter extends FilterIterator {
    		public function __construct (array $data) {
    			parent::__construct(new ArrayIterator($data));
    		}   
    
    		public function accept () {
    			return ($this->key() % 2);
    		}
    	}
    
    	$arr_meta	= $meta;
    	$posts_id = array();
    
    	foreach (new IndexFilter($arr_meta) as $key => $value) {
        $posts_id[$key] = $value;
    
    }
    
    ?>
    <h2>Favorite Posts</h2>
    <ul>
    <?php
    $data_posts_id = array_reverse($posts_id);
    foreach($data_posts_id as $show_posts_id){
    	echo '<li><a href="'.get_permalink($show_posts_id).'" title="Permanent link to '.get_the_title($show_posts_id).'">'.get_the_title($show_posts_id).'</a></li>';
    }
    ?>
    в 21.06.2016.

    Я готов оплатить помощь очень нужна!

    в 22.06.2016.

    onlajn @bk.ru или скайп: trubin evgenij

    (без пробелов)

    в 24.06.2016.
    Добавить Комментарий

    Ваш ответ

    Размещая свой ответ, вы соглашаетесь с правилами сайта.