{"id":1282,"date":"2018-06-18T18:09:46","date_gmt":"2018-06-18T16:09:46","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=1282"},"modified":"2018-06-18T18:17:12","modified_gmt":"2018-06-18T16:17:12","slug":"wordpress-beitraege-einfache-nummerische-pagination","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2018\/06\/18\/wordpress-beitraege-einfache-nummerische-pagination\/","title":{"rendered":"WordPress Beitr\u00e4ge: einfache nummerische Pagination"},"content":{"rendered":"<p>Dies ist als Ableger des vorigen Beitrags entstanden, eine simple nummerische Pagination der Rezepte ist auch nicht wesentlich schwieriger als die alphabetische Pagination und kann ganz \u00e4hnlich konstruiert werden. Ich mache das wieder mit einem Shortcode in einem Plugin. Zuerst wird die Anzahl der pro Seite auszugebenden Rezepte festgelegt und ermittelt, wie viele Seiten das werden:<\/p>\n<pre>function el_num_pagination(){\r\n\r\n\/\/Anzahl Rezepte pro Seite festlegen\r\n$pro_seite = 15;\r\n\u00a0\u00a0 \u00a0\r\n\/\/Anzahl aller ver\u00f6ffentlichten Rezepte bestimmen\r\nglobal $wpdb;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 $alleposts = $wpdb-&gt;get_results( \"SELECT * from wp_posts \r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 where post_type like 'post' and post_status like 'publish'\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$gefunden = $wpdb-&gt;num_rows;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo $gefunden.\" Rezepte insgesamt&lt;br&gt;\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ceil: n\u00e4chsth\u00f6here Ganzzahl\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$anzahl_seiten = ceil($gefunden\/$pro_seite);\r\n        \/\/Debug-Ausgabe\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo \"Das sind: \".$anzahl_seiten.\" Seiten bei \".$pro_seite.\" Rezepten pro Seite\";<\/pre>\n<p>Dann baue ich mir das Formular mit den Buttons f\u00fcr die Seitenzahlen zusammen:<\/p>\n<pre>\/\/Formular mit Buttons\r\necho \"&lt;form action = '#' method = 'post'&gt;\";\r\n\r\nfor ($i=1; $i &lt;=$anzahl_seiten; $i++){\r\n\u00a0\u00a0 \u00a0echo \"&lt;input type='submit' id='el_num_button' name='\".$i.\"' value='\".$i.\"'&gt;\";\r\n}\r\necho \"&lt;\/form&gt;\";<\/pre>\n<p>Die Buttons werden in der style.css noch ein bisschen h\u00fcbscher formatiert, die m\u00fcssen nur ein wenig breiter werden:<\/p>\n<pre>#el_num_button{\r\n\u00a0\u00a0\u00a0 height:30px;\r\n\u00a0\u00a0\u00a0 width:24px;\r\n\u00a0\u00a0 \u00a0padding:2px;\r\n\u00a0\u00a0 \u00a0border: 2px solid white;\r\n\u00a0\u00a0 \u00a0margin 2px;\r\n\u00a0\u00a0 \u00a0padding: 1px 1px 1px;\r\n}<\/pre>\n<p>Dann laufe ich wieder durch alle Seitenzahlen durch und frage mit dem if(isset()) ab, ob eine Seitenzahl angeklickt wurde. Falls ja, wird die Ausgabefunktion mit zwei Parametern aufgerufen, der Nummer der aktuellen Seite und der Anzahl der Rezepte pro Seite:<\/p>\n<pre>for ($j = 1; $j &lt;= $anzahl_seiten; $j++){\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (isset($_POST[''.$j.''])){\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return el_num_aufruf(<span style=\"color: #008000;\">$j,$pro_seite<\/span>);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0}<\/pre>\n<p>In der Ausgabefunktion nutze ich die Tatsache, dass man dem SQL LIMIT einen Offset mitgeben kann. Dieser muss bei 0 (Null) auf der Seite 1 anfangen, auf Seite 2 ist er dann einmal die Anzahl der Beitr\u00e4ge pro Seite, auf Seite drei zweimal etc&#8230; deswegen die Konstruktion mit dem <em>$akt_seite-1<\/em>:<\/p>\n<pre>function el_num_aufruf($akt_seite, $aufderseite){\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0global $wpdb;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/Limit Offset eins weniger als aktuelle Seite\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0<span style=\"color: #ff0000;\">$hilf<\/span> = (<span style=\"color: #008000;\">$akt_seite-1<\/span>)*$aufderseite;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$alleposts = $wpdb-&gt;get_results( \"SELECT * from wp_posts \r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 where post_type like 'post' \r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 and post_status like 'publish'\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 <span style=\"color: #ff0000;\">LIMIT \".$hilf.\"<\/span>, \".<span style=\"color: #008000;\">$aufderseite<\/span>.\" \");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $gefunden = $wpdb-&gt;num_rows;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0foreach ($alleposts as $einpost){\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$pfad = get_the_permalink($einpost-&gt;ID);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo \"&lt;a href = '\".$pfad.\"'&gt;\".$einpost-&gt;post_title.\"&lt;\/a&gt;&lt;br&gt;\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\r\n} \/\/end function el_num_aufruf<\/pre>\n<p>Am Ende gebe ich die Rezepte mit den Links wieder mit einem Foreach aus. Das wars!<\/p>\n<div id=\"attachment_1283\" style=\"width: 546px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-1283\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1283\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/06\/15_pro_seite.jpg\" alt=\"15_pro_seite\" width=\"536\" height=\"567\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/06\/15_pro_seite.jpg 536w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/06\/15_pro_seite-284x300.jpg 284w\" sizes=\"(max-width: 536px) 100vw, 536px\" \/><p id=\"caption-attachment-1283\" class=\"wp-caption-text\">15_pro_seite<\/p><\/div>\n<p>Das funktioniert auch mit anderen Werten f\u00fcr die Ausgabe pro Seite, ich nehm mal 7:<\/p>\n<div id=\"attachment_1284\" style=\"width: 529px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-1284\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1284\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/06\/7_pro_seite.jpg\" alt=\"7_pro_seite\" width=\"519\" height=\"439\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/06\/7_pro_seite.jpg 519w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/06\/7_pro_seite-300x254.jpg 300w\" sizes=\"(max-width: 519px) 100vw, 519px\" \/><p id=\"caption-attachment-1284\" class=\"wp-caption-text\">7_pro_seite<\/p><\/div>\n<p>Oder wesentlich mehr, 30, da sind wir komplett flexibel:<\/p>\n<div id=\"attachment_1285\" style=\"width: 551px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-1285\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1285\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/06\/30_pro_seite.jpg\" alt=\"30_pro_seite\" width=\"541\" height=\"624\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/06\/30_pro_seite.jpg 541w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/06\/30_pro_seite-260x300.jpg 260w\" sizes=\"(max-width: 541px) 100vw, 541px\" \/><p id=\"caption-attachment-1285\" class=\"wp-caption-text\">30_pro_seite<\/p><\/div>\n<p>Man k\u00f6nnte jetzt nat\u00fcrlich noch ein Auswahlfeld f\u00fcr den Benutzer einbauen, so dass er selbst w\u00e4hlen kann wieviele Rezepte pro Seite er angezeigt haben m\u00f6chte, aber damit kann sich jeder selber am\u00fcsieren. Ich werde eh die alfabetische Pagination nehmen, die taugt mir besser f\u00fcr meine Anwender.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dies ist als Ableger des vorigen Beitrags entstanden, eine simple nummerische Pagination der Rezepte ist auch nicht wesentlich schwieriger als die alphabetische Pagination und kann ganz \u00e4hnlich konstruiert werden. Ich mache das wieder mit einem Shortcode in einem Plugin. Zuerst wird die Anzahl der pro Seite auszugebenden Rezepte festgelegt und ermittelt, wie viele Seiten das [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1,21,11,7,4,14,2],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/1282"}],"collection":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/comments?post=1282"}],"version-history":[{"count":4,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/1282\/revisions"}],"predecessor-version":[{"id":1289,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/1282\/revisions\/1289"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=1282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=1282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=1282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}