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

C++ JAVA
User avatar
vinsbg
Гуру
Гуру
Posts: 2604
Joined: Wed Jan 28, 2009 12:21 pm
Answers: 51
Location: София
Contact:

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

Post by vinsbg » Thu Mar 21, 2019 5:09 am

Здравейте,

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

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

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

Code: Select all

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

function render_ps_selectbox&#40;&#41; &#123;
    return products_per_page&#40;&#41;;
&#125;
add_shortcode&#40; 'products_per_page', 'render_ps_selectbox' &#41;;
Съответно със шорткод показвам дропдаунът на страницата

Code: Select all

&#91;products_per_page&#93;
Проблемът:

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

Някакви идеи?

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Thu Mar 21, 2019 1:22 pm

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

User avatar
vinsbg
Гуру
Гуру
Posts: 2604
Joined: Wed Jan 28, 2009 12:21 pm
Answers: 51
Location: София
Contact:

Post by vinsbg » Thu Mar 21, 2019 2:00 pm

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

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Thu Mar 21, 2019 2:37 pm

Според мен трябва да търсиш заявката за страницирането. Там трябва да има някакъв лимит, който в момента е 10 и да го заменяш с избраната стойност.

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 883
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 63

Post by Revelation » Thu Mar 21, 2019 6:42 pm

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

User avatar
vinsbg
Гуру
Гуру
Posts: 2604
Joined: Wed Jan 28, 2009 12:21 pm
Answers: 51
Location: София
Contact:

Post by vinsbg » Fri Mar 22, 2019 4:30 am

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

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

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

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

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 883
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 63

Post by Revelation » Fri Mar 22, 2019 7:59 am

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

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

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Fri Mar 22, 2019 8:08 am

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

User avatar
vinsbg
Гуру
Гуру
Posts: 2604
Joined: Wed Jan 28, 2009 12:21 pm
Answers: 51
Location: София
Contact:

Post by vinsbg » Fri Mar 22, 2019 9:36 am

Дори и когато махна плъгина и оставя дефолтната страница на вукомерса е пак същото...

User avatar
vinsbg
Гуру
Гуру
Posts: 2604
Joined: Wed Jan 28, 2009 12:21 pm
Answers: 51
Location: София
Contact:

Post by vinsbg » Fri Mar 22, 2019 9:48 am

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

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

Post Reply