{"id":1365,"date":"2018-07-08T15:05:21","date_gmt":"2018-07-08T13:05:21","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=1365"},"modified":"2018-11-09T06:23:47","modified_gmt":"2018-11-09T05:23:47","slug":"custom-post-types-in-einem-widget","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2018\/07\/08\/custom-post-types-in-einem-widget\/","title":{"rendered":"Custom Post Types in einem Widget"},"content":{"rendered":"<p>Ich hab nach langem und nicht besonders produktiven Googlen beschlossen, KEIN eigenes Widget f\u00fcr die Ausgabe der neuesten X Kochb\u00fccher zu schreiben, das ist mir viel zu umst\u00e4ndlich. Es gibt auch Plugins speziell f\u00fcr diesen Zweck, aber das muss auch nicht sein, denn eigentlich ist die Anforderung mit einem einzigen MySQL-Statement zu erschlagen, das machen wir selber. Ich packe das wieder mal in einen Shortcode, der kann in die functions.php oder in ein Plugin, ganz nach Belieben. Das Ganze sieht schlicht und ergreifend so aus:<\/p>\n<pre>function kochbuch_ausgabe(){\r\n\u00a0 \u00a0\r\n\u00a0 global $wpdb;\r\n\u00a0 $alleposts = $wpdb-&gt;get_results( \"SELECT * from iii_wpposts \r\nWHERE post_type LIKE 'kochbuch' \r\nAND post_status LIKE 'publish' \r\nORDER BY post_date DESC LIMIT 10\");\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0$ausgabe=\"\";\r\n\u00a0\u00a0 \u00a0foreach($alleposts as $einpost){\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $ausgabe = $ausgabe.$einpost-&gt;post_title.\"&lt;\/br&gt;\";\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0return $ausgabe;\r\n\u00a0}\r\n\u00a0add_shortcode('k_ausgabe', 'kochbuch_ausgabe');<\/pre>\n<p>Im Select ist alles drin was wir brauchen, das Limit kann man sich nach Wunsch selber anpassen.<\/p>\n<p>Wenn wir das jetzt in einem Widget in der Sidebar haben wollen, klemmen wir uns ein Text-Widget und f\u00fcgen da den Shortcode ein, und vergeben einen Titel nach Wunsch. Sollte das nicht klappen, muss man zuerst noch Shortcodes f\u00fcr das Text-Widget aktivieren, das geht mit einer Zeile in der functions.php:<\/p>\n<pre>add_filter('widget_text', 'do_shortcode');<\/pre>\n<p>Fertig sieht das so aus:<\/p>\n<div id=\"attachment_1367\" style=\"width: 1003px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-1367\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1367\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/die_neuesten_kochb\u00fccher.jpg\" alt=\"die_neuesten_kochb\u00fccher\" width=\"993\" height=\"565\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/die_neuesten_kochb\u00fccher.jpg 993w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/die_neuesten_kochb\u00fccher-300x171.jpg 300w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/die_neuesten_kochb\u00fccher-768x437.jpg 768w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/die_neuesten_kochb\u00fccher-624x355.jpg 624w\" sizes=\"(max-width: 993px) 100vw, 993px\" \/><p id=\"caption-attachment-1367\" class=\"wp-caption-text\">die_neuesten_kochb\u00fccher<\/p><\/div>\n<p>Wer mag, kann sich jetzt noch mit get_the_permalink() die Links zu den entsprechenden Kochb\u00fcchern basteln, die ID ist ja mit im Select. Das spare ich mir jetzt, da kann jeder selber kreativ werden.<\/p>\n<h2>Die Ausgabe der Custom Taxonomies in einem Widget: ein schickes kleines Plugin<\/h2>\n<p>Da mir die Tabellenstruktur der Taxonomies zu komplex f\u00fcr einen Select ist (join \u00fcber 4 Tabellen), hab ich mal kurzen Proze\u00df gemacht und mir ein Plugin f\u00fcr diesen Zweck ausgesucht:<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"WAhNr921kF\"><p><a href=\"https:\/\/de.wordpress.org\/plugins\/list-custom-taxonomy-widget\/\">List Custom Taxonomy Widget<\/a><\/p><\/blockquote>\n<p><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" src=\"https:\/\/de.wordpress.org\/plugins\/list-custom-taxonomy-widget\/embed\/#?secret=WAhNr921kF\" data-secret=\"WAhNr921kF\" width=\"600\" height=\"338\" title=\"&#8222;List Custom Taxonomy Widget&#8220; &#8212; Plugin Directory\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p>Es tut genau das, was es soll, und ist so gut wie selbsterkl\u00e4rend.<\/p>\n<div id=\"attachment_1370\" style=\"width: 325px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-1370\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1370\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/list_custom_taxonomy.jpg\" alt=\"list_custom_taxonomy\" width=\"315\" height=\"348\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/list_custom_taxonomy.jpg 315w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/list_custom_taxonomy-272x300.jpg 272w\" sizes=\"(max-width: 315px) 100vw, 315px\" \/><p id=\"caption-attachment-1370\" class=\"wp-caption-text\">list_custom_taxonomy<\/p><\/div>\n<p>Die Ausgabe ist ganz wie erwartet:<\/p>\n<div id=\"attachment_1371\" style=\"width: 262px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-1371\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1371\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/aus_aller_welt.jpg\" alt=\"aus_aller_welt\" width=\"252\" height=\"260\" \/><p id=\"caption-attachment-1371\" class=\"wp-caption-text\">aus_aller_welt<\/p><\/div>\n<p>Damit lass ich es gut sein, da muss man echt nichts mehr selber programmieren. Das Widget l\u00e4\u00dft sich nat\u00fcrlich auch f\u00fcr die Kochbuch-Stichworte verwenden, da brauchen wir also auch nix extra.<\/p>\n<div id=\"attachment_1372\" style=\"width: 202px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-1372\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1372\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/widget_stichworte.jpg\" alt=\"widget_stichworte\" width=\"192\" height=\"160\" \/><p id=\"caption-attachment-1372\" class=\"wp-caption-text\">widget_stichworte<\/p><\/div>\n<h2>F\u00fcr Bastler: es geht auch mit get_terms()<\/h2>\n<p>Wer sich die Ausgabe der Custom Taxonomies partout selber antun m\u00f6chte, kann auf die WP_Funktion get_terms() zur\u00fcckgreifen (siehe Codex). Den Link auf die enstprechenden Begriffe holt man sich dabei mit get_term_link(). Ich hab hier nur mal ein ganz kurzes Beispiel in einen Shortcode gepackt:<\/p>\n<pre>function get_land(){\r\n\u00a0$terms = get_terms( 'land' );\r\nif ( ! empty( $terms ) &amp;&amp; ! is_wp_error( $terms ) ){\r\n\u00a0\r\n\u00a0foreach ( $terms as $term ) {\r\n\u00a0 \u00a0\r\n\u00a0\u00a0 echo \"&lt;a href = '\".get_term_link($term).\"'&gt;\".$term-&gt;name .\"&lt;\/a&gt;&lt;br&gt;\";\r\n\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n}\r\n}\r\nadd_shortcode('land_ausgabe', 'get_land');<\/pre>\n<p>Das ber\u00fccksichtigt jetzt nicht die geschachtelte Struktur, sondern gibt nur eine alphabetisch sortierte Liste der Terms der Taxonomie land mit ihren Links aus.<\/p>\n<div id=\"attachment_1378\" style=\"width: 315px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-1378\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1378\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/land_bastler.jpg\" alt=\"land_bastler\" width=\"305\" height=\"245\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/land_bastler.jpg 305w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/07\/land_bastler-300x241.jpg 300w\" sizes=\"(max-width: 305px) 100vw, 305px\" \/><p id=\"caption-attachment-1378\" class=\"wp-caption-text\">land_bastler<\/p><\/div>\n<p>Man k\u00f6nnte jetzt noch den Namen der Taxonomie als Parameter in den Shortcode \u00fcbergeben und sonst noch allerhand&#8230; aber wie gesagt, das ist was f\u00fcr Bastler. Ich verwende das oben vorgestellte Plugin, und gut ists.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich hab nach langem und nicht besonders produktiven Googlen beschlossen, KEIN eigenes Widget f\u00fcr die Ausgabe der neuesten X Kochb\u00fccher zu schreiben, das ist mir viel zu umst\u00e4ndlich. Es gibt auch Plugins speziell f\u00fcr diesen Zweck, aber das muss auch nicht sein, denn eigentlich ist die Anforderung mit einem einzigen MySQL-Statement zu erschlagen, das machen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1,48,7,8,14,45,2,59],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/1365"}],"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=1365"}],"version-history":[{"count":8,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/1365\/revisions"}],"predecessor-version":[{"id":1379,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/1365\/revisions\/1379"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=1365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=1365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=1365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}