- Дропдаун с избор на брой продукти на страница в WordPress
12
WT форуми -> PHP MySQL ASP.NET -> Дропдаун с избор на брой продукти на страница в WordPress
Създайте нова тема Напишете отговор 
Автор Съобщение
vinsbg
Редовен
Редовен

Регистриран на: 28/01/2009 2:21 pm

Support: 51
Bonus: 87
Мнения: 2604
Мнение 21/03/2019 7:09 am     Дропдаун с избор на брой продукти на страница в WordPress Отговорете с цитат


Здравейте,

Имам казус, с който нещо не успявам да се справя. Искам да направя дропдаун меню, което да ми дава възможност да си избера, колко продукта да се покажат на страницата.

Дефолтно са 10. Ако избера на дропдауна 15, 20, 50 искам да се заредят съответено, колкото е избрано.

Функцията, която имам в function.php

function products_per_page() {
    $per_page = filter_input(INPUT_GET, 'perpage', FILTER_SANITIZE_NUMBER_INT);
    echo '<div class="dropdown2">';
    echo '<button onclick="myPage()" class="dropbtn">Брой продукти </button>';
    echo '<div id="myPage" class="dropdown-content">';
    $orderby_options = array('15' => '15','20' => '20','50' => '50','75' => '75','100' => '100', '150' => '150');
    foreach( $orderby_options as $value => $label ) {
        echo "<a href='?perpage=$value'>$label</a>";       
    }
    echo '</div>';
    echo '</div>';
}

function render_ps_selectbox() {
    return products_per_page();
}
add_shortcode( 'products_per_page', 'render_ps_selectbox' );


Съответно със шорткод показвам дропдаунът на страницата

[products_per_page]


Проблемът:

Когато отида на страницата и избера примерно да се покажат 50 продукта, страницата се рефрешва, в УРЛ-а се добавя параметъра ?perpage=50, но броят на продуктите не се променя и си остават 10.

Някакви идеи?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1769
Мнение 21/03/2019 3:22 pm      Отговорете с цитат


Нямам никакъв опит с WordPress и може да греша, обаче в този код който си дал не виждам заявката към базата, а би трябвало и там да подадеш броя който искаш да ти върне.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
vinsbg
Редовен
Редовен

Регистриран на: 28/01/2009 2:21 pm

Support: 51
Bonus: 87
Мнения: 2604
Мнение 21/03/2019 4:00 pm      Отговорете с цитат


teroristd написа:
Нямам никакъв опит с WordPress и може да греша, обаче в този код който си дал не виждам заявката към базата, а би трябвало и там да подадеш броя който искаш да ти върне.


Не знам и аз .. затова реших да се обърна към вас тук.. Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1769
Мнение 21/03/2019 4:37 pm      Отговорете с цитат


Според мен трябва да търсиш заявката за страницирането. Там трябва да има някакъв лимит, който в момента е 10 и да го заменяш с избраната стойност.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 57
Bonus: 114
Мнения: 777
Мнение 21/03/2019 8:42 pm      Отговорете с цитат


Ти ли си я писал тази функция? Също намери JavaScript функцията myPage() какво прави, както и дали perpage се използва някъде другаде.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
vinsbg
Редовен
Редовен

Регистриран на: 28/01/2009 2:21 pm

Support: 51
Bonus: 87
Мнения: 2604
Мнение 22/03/2019 6:30 am      Отговорете с цитат


@teroristd, страницата показва продуктите, чрез плъгин WooCommerce Product Filter. Ползва се само за това - да изкара продуктите. В него е зададен лимит от 10 продукта, но аз искам съвсем отделна функция. Не съм сигурен дали имат нещо общо.

@Revelation, функцията я видях в един туториал и в няколко теми в SO, а JS функция myPage() e просто за дропдауна:

Javascript code:

function myPage() {
document.getElementById("myPage").classList.toggle("show");
}


Също така смених 'perpage' с нещо друго, което съм 100% сигурен, че не се използва. Същата работа, лепва го на УРЛ-то, рефрешва страницата, но продуктите си стоят 10...
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 57
Bonus: 114
Мнения: 777
Мнение 22/03/2019 9:59 am      Отговорете с цитат


Варианта не е да го замениш с нещо, което си сигурен, че не се ползва, защото трябва да се ползва от WooCommerce.

Намери къде в кода е хардкоднато да използва 10 записа и го замени там.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1769
Мнение 22/03/2019 10:08 am      Отговорете с цитат


vinsbg написа:
@teroristd, страницата показва продуктите, чрез плъгин WooCommerce Product Filter. Ползва се само за това - да изкара продуктите. В него е зададен лимит от 10 продукта, но аз искам съвсем отделна функция. Не съм сигурен дали имат нещо общо.


Аз си мисля че нещата са свързани. Щом използваш плъгин който се грижи за показването на определен брой продукти, то и там трябва да подаваш параметър за да има резултат.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
vinsbg
Редовен
Редовен

Регистриран на: 28/01/2009 2:21 pm

Support: 51
Bonus: 87
Мнения: 2604
Мнение 22/03/2019 11:36 am      Отговорете с цитат


Дори и когато махна плъгина и оставя дефолтната страница на вукомерса е пак същото...
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
vinsbg
Редовен
Редовен

Регистриран на: 28/01/2009 2:21 pm

Support: 51
Bonus: 87
Мнения: 2604
Мнение 22/03/2019 11:48 am      Отговорете с цитат


Revelation написа:
Варианта не е да го замениш с нещо, което си сигурен, че не се ползва, защото трябва да се ползва от WooCommerce.

Намери къде в кода е хардкоднато да използва 10 записа и го замени там.

Никъде не е хардкоданто. Аз през админа си записвам колко да се показват дефолтно на страницата и съответно си има странициране
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 57
Bonus: 114
Мнения: 777
Мнение 23/03/2019 2:44 am      Отговорете с цитат


Ами намери заявката и замени тази част. Очевидно е, че тази стойност се записва някъде в базата данни и се взима по някакъв начин, за да се използва.

Мисля, че достатъчно те насочих какво точно трябва да търсиш.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
heytar
Нов
Нов

Регистриран на: 29/06/2015 9:28 am

Support: 2
Bonus: 4
Мнения: 87
Мнение 24/03/2019 10:01 am      Отговорете с цитат


Не си дал линк към плъгините които се ползват затова и отговора ми е -
https://www.google.com/search?q=pre_get_posts+woocommerce
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
12
Страница 1 от 2


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети