Дропдаун с избор на брой продукти на страница в WordPress

vinsbg

Registered
Здравейте,

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

Дефолтно са 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.

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

Не знам и аз .. затова реших да се обърна към вас тук.. :)
 
Според мен трябва да търсиш заявката за страницирането. Там трябва да има някакъв лимит, който в момента е 10 и да го заменяш с избраната стойност.
 
Ти ли си я писал тази функция? Също намери JavaScript функцията myPage() какво прави, както и дали perpage се използва някъде другаде.
 
@teroristd, страницата показва продуктите, чрез плъгин WooCommerce Product Filter. Ползва се само за това - да изкара продуктите. В него е зададен лимит от 10 продукта, но аз искам съвсем отделна функция. Не съм сигурен дали имат нещо общо.

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

[js]
function myPage() {
document.getElementById("myPage").classList.toggle("show");
}[/js]

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

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

Аз си мисля че нещата са свързани. Щом използваш плъгин който се грижи за показването на определен брой продукти, то и там трябва да подаваш параметър за да има резултат.
 
Дори и когато махна плъгина и оставя дефолтната страница на вукомерса е пак същото...
 
Revelation каза:
Варианта не е да го замениш с нещо, което си сигурен, че не се ползва, защото трябва да се ползва от WooCommerce.

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

Мисля, че достатъчно те насочих какво точно трябва да търсиш.
 
Не си дал линк към плъгините които се ползват затова и отговора ми е -
https://www.google.com/search?q=pre_get_posts+woocommerce
 
Ако правилно съм разбрал идеята е да се намери заявката и да се преправи във формат с лимит за всяка стойност, която ще е на падащото меню?
 
teroristd каза:
Това беше идеята от самото начало :). То няма друг начин да се направи.
Тогава това може би няма да ми свърши работа, защото при един ъпдейт на плъгина и всичко заминава.

Не мисля, че мога да сложа плъгин в чайлд темата, за да се избегне оувъррайда при ъпдейт на същия... или поне не знам за такъв начин?
 
Може би тогава трябва да потърсиш друг плъгин който има такава функционалност.
 
Хрумва ми и още една идея, но не знам дали ще сработи. Какво ще стане ако го презапишеш този плугин, с друго име? Тогава би трябвало да не се ъпдейтва.
 

Горе