Új hozzászólás Aktív témák

  • lalimano

    tag

    Sziasztok!

    Hobbiszinten ismerkedem a Wordpressel, és arra gondoltam jó lenne ha az oldal látogatói rendezhetnék különböző szempontok szerint a bejegyzéseket.
    Erre találtam is egy plugint, ami tökéletes kiindulási alap: [WP Sort Posts], sikerült is annyival kieészítenem, hogy postok száma szerint csökkenő sorrendbe is tudjon rendezni:
    <?php
    /*
    Plugin Name: WP Sort Posts
    Plugin URI: http://sitehint.ru/?p=757
    Description:
    Version: 1.0
    Author: TrueFalse
    Author URI: http://red-book-cms.ru
    License: GPLv2 or later
    Text Domain: wpsp
    Domain Path: /languages
    */

    # Загрузка строк локализации:
    load_plugin_textdomain('wpsp', false, dirname( plugin_basename( __FILE__ ) ). '/languages/');

    # Сортировка записей:
    function wpsp_orderby_posts($vars) {
    $params = wpsp_get_orderby_select();
    $vars->set('orderby', $params['orderby']);
    $vars->set('order', $params['order']);
    $vars->set('ignore_sticky_posts', 1);
    return $vars;
    }
    add_filter('pre_get_posts', 'wpsp_orderby_posts');

    # Обрабатываем POST с выпадающего списка:
    function wpsp_get_orderby_select() {
    $result = array(
    '1' => ' selected="selected"',
    '2' => '',
    '3' => '',
    '4' => '',
    '5' => '',
    'orderby' => 'date',
    'order' => 'DESC'
    );
    if (intval($_GET['wpsp_orderby_posts']))
    switch ($_GET['wpsp_orderby_posts']) {
    case '1': // Сортировать по заголовку:
    $result['orderby'] = "title";
    $result['order'] = "ASC";
    break;
    case '2': // Сортировать по дате: сначала новые:
    $result['orderby'] = "date";
    $result['order'] = "DESC";
    $result['2'] = ' selected="selected"';
    $result['1'] = '';
    break;
    case '3': // Сортировать по дате: сначала старые:
    $result['orderby'] = "date";
    $result['order'] = "ASC";
    $result['3'] = ' selected="selected"';
    $result['1'] = '';
    break;
    case '4': // Сортировать по дате последней правки:
    $result['order'] = "modified";
    $result['4'] = ' selected="selected"';
    $result['1'] = '';
    break;
    case '5':
    $result['orderby'] = "comment_count";
    $result['order'] = "DESC";
    $result['5'] = ' selected="selected"';
    $result['1'] = '';
    break;
    }
    return $result;
    }
    add_filter('wp_head', 'wpsp_get_orderby_select');

    # Вывод формы на экран:
    function wpsp_orderby_posts_form() {
    $params = wpsp_get_orderby_select();
    echo "
    <form method=\"get\" id=\"order\">". __('Sort posts', 'wpsp'). "
    <select name=\"wpsp_orderby_posts\" onchange=\"this.form.submit()\">
    <option value=\"1\"{$params['1']}>". __('by title', 'wpsp'). "</option>
    <option value=\"2\"{$params['2']}>". __('by date (new forward)', 'wpsp'). "</option>
    <option value=\"3\"{$params['3']}>". __('by date (old onwards)', 'wpsp'). "</option>
    <option value=\"4\"{$params['4']}>". __('by date modified', 'wpsp'). "</option>
    <option value=\"5\"{$params['5']}>". __('by comments', 'wpsp'). "</option>
    </select>
    </form>";
    }

    ?>

    Viszont a Facebookos kommentrendszert használnám, hogy ne fogyasszam a tárhelyet a kommentekk tárolásával.

    Tehát röviden: Azt szeretném megvalósítani, hogy az adatbázisban a post adatai mellett legyen egy külön mező (vagy ezt külön táblában kéne, hogy a plugin eltávolítható legyen?) , ami egy számot tárol, és növeli, ha az adott posthoz hozzászólnak (vagy lekéri a facebookos adatbázisból, de csak akkor frissítse, ha kommentel valaki, ne mindig mikor betöltik a konkrét bejegyzést)

    Későbbi terv, hogy ha valaki Likeolja, +1-eli vagy megosztja valami közösségi oldalon (az oldalra kihelyezett gombokkal), akkor növel egy számlálót, és ez szerint is lehessen rendezni.

    Ezekben tudna valaki segíteni? Elég kezdő vagyok, ami tutorialokat találtam, nem sikerült azok alapján :/
    Előre is köszi! :R

Új hozzászólás Aktív témák