Ich will dass eine Kategorie ausgelassen wird wie geht das?
previous_post_link() und next_post_link()! KAtegorie auslassen
-
-
- Gerade eben
- Anzeige
Hallo!
Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.
- ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
- ✔️ Deutsche Server & DSGVO-konform
- ✔️ Persönlicher Support (kein 0815-Ticket-System)
-
-
Wo steht den die Id? In wo terms steht 20 beim Punkt steht cAtid 24 beide funktionieren nicht
-
-
Hab im link stehen 24 aber es funktioniert trotzdem nicht
-
Wie sieht denn dein previous_post_link() code nun aus?
-
previous_post_link('%link', 'vorheriger', true, '24');
-
sorry, weiss auch nicht mehr worans liegen könnte.
-
ah hab denn Denkfehler gefunden!
Ich hab 3 Kategorien, diese 3 gehören zur einer "über" kategorie!
Also ich will jetzt das wenn der User in einer dieser 3, momentanen, Kategorien unterwegs ist alle anderen Kategorien ausgeblendet werden!
ist das mit if {} möglich? Wenn ja wie? -
ich denke mir das jetzt so in etwa
Ich kenn mich mit pho nicht so gut aus, vor allem nicht im zusammenhang mit WordpressCode
Alles anzeigen$catid=get_the_category( $id ) if categoryid(alo die in der ich momentan drinnen bin=$catid { previous_post_link('%link', 'vorheriger Teil', TRUE, only '$catid'); ext_post_link('%link', 'vorheriger Teil', TRUE, only '$catid' ); } else { echo "error"; }Also ich will das ALLE anderen Kategorien ignoiert werden außer die in der momentan der USER untwewegs ist!
-
also bei mir verändert der letze Parameter nichts -.- woran kann das liegen?
-
Was meinst du mit einer "über" Kategorie? Gibt's die in Wordpress oder ist das nur als Gedankenkonstruckt?
Was meinst du mit "in einer dieser 3, momentanen, Kategorien unterwegs ist"? Reicht es, wenn ein User ein Beitrag dieser Kategorie anguckt, oder muss dazu zuerst die Kategorie auswählen?
Mit ausgeblendet meinst wohl einfach previous_post_link() und next_post_link() sollen nicht mehr Links zu Beiträgen anderer Categorien ausspucken?PHP$catid=get_the_category( $id ); $special_cats=array(1,6,24) // die 3 speziellen Kategorien IDs if (in_array($catid, $special_cats) { previous_post_link('%link', 'vorheriger Teil', false, implode(' and ', $special_cats)); ext_post_link('%link', 'vorheriger Teil', false, implode(' and ', $special_cats) ); } else { // User is not in the special categories. }also bei mir verändert der letze Parameter nichts -.- woran kann das liegen?
Je nach Fall am TRUE (das dritte Argument in previous_post_link). -
Ich habe zb die Kategorie "Serien" dann 3 Artikel zb Heros, 24h und Lost diese 3 Artikel haben die Kategorie zb "serien" und "Lost" dAnn nach dem Einleitungstext hat die Kategorie Lost noch mehr Artikel die aber nur in der Kategorie löst sind. Da dr User auch auf den Hauptartikel von Lost kommt zwischt er momentan dann zwischen Lost , Heros und 24h rum ich will aber ebendiese verhindern. Ich will nämlich dass wenn der User auf Serien klickt er Ei e Auflistung aller Serien bekommt und das geht am einfachsten mit Kategorien oder?
Deinen Code probiere ich heute nach der Arbeit, momentan mit dem Handy hier
-
Vergiss den oberen Code.
Ich will nämlich dass wenn der User auf Serien klickt er Ei e Auflistung aller Serien bekommt und das geht am einfachsten mit Kategorien oder?
Ja, ich denke schon.Probiermal das:
PHP
Alles anzeigen$special_cats = array('Heros','24h','Lost') // die 3 speziellen Kategorien Namen $special_cat = -1; foreach((get_the_category()) as $category) { if (in_array($category->cat_name, $special_cats)) { $special_cat = $category->cat_ID; } } if ($special_cat > -1) { previous_post_link('%link', 'vorheriger Teil', false, $special_cat); ext_post_link('%link', 'vorheriger Teil', false, $speical_cat); } else { // User is not in the special categories. } -
Problem besteht noch immer!
Code
Alles anzeigen$special_cats = array('Gothic 1','Risen 1','Simon the Sorcerer'); // die 3 speziellen Kategorien Namen $special_cat = -1; foreach((get_the_category()) as $category) { if (in_array($category->cat_name, $special_cats)) { $special_cat = $category->cat_ID; } } if ($special_cat > -1) { previous_post_link('%link', 'vorheriger Teil', false, $special_cat); next_post_link('%link', 'vorheriger Teil', false, $special_cat); } else { // User is not in the special categories. }jetzt swicht er aber auch zwischen den unter Beiträgen! Wenn ich auf true stellt hab ich das selbe Problem wie zu begin! Also ich will das alle Artikel der Kategorie "Projekte" (ID 26) nicht anwählbar sind!
-
mit unter Beiträgen meine ich jetzt er swicht von "Heros Staffel 1" auf "Lost Staffel 2"...
-
Das Grundproblem ist, dass es Artikel gibt, die in mehreren Kategorien sind. Sonst könntest du einfach true angeben im dritten Argument. Mein Versuch in meinem letzten Post kann nicht funktionieren, ich hatte vergessen, dass das vierte Argument Kategorien ausschliesst, ich dachte es schliesst sie ein (war nur im letzten post so).
Ich haben folgendes plugin leicht abgeändert, dann sollte es klappen: http://geriandricky.maxwells.net.nz/wp-content/upl…previouscat.txt
Füge folgendes in die functions.php des themes:
PHP
Alles anzeigenfunction previous_cat_post($categoryID, $beforeGroup='<ul>', $afterGroup='</ul>', $beforeEach='<li>', $afterEach='</li>', $showtitle=true, $textForEach='Previous post in %:<br />') { global $wpdb, $post; // get home url for base of link $info = get_bloginfo('url'); $info = apply_filters('bloginfo', $info); $homeurl = convert_chars($info); // get post id of current post $currentPostId = $post->ID; // get post date of current post $currentPostDate = $post->post_date; $startGroup = true; $currentCat = $categoryID; { // HEAVY LIFTING! Getting the prevous post. Ugh. $newPostInfo = $wpdb->get_row( "SELECT * FROM $wpdb->posts LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id = $currentCat->cat_ID AND $wpdb->posts.post_date < '$currentPostDate' ORDER BY post_date DESC LIMIT 1"); if ($newPostInfo) { $leaderText = str_replace('%', $currentCat->cat_name, $textForEach); if ($startGroup) { echo $beforeGroup; $startGroup = false; } if ($showtitle) { echo $beforeEach.$leaderText."<a href=\"".get_permalink($newPostInfo->ID)."\">".stripslashes($newPostInfo->post_title)."</a>".$afterEach; } else { echo $beforeEach."<a href=\"".get_permalink($newPostInfo->ID)."\">".$leaderText."</a>".$afterEach; } } } if (!$startGroup) { echo $afterGroup; } else { // RAM: echo None if there is nothing there. echo $beforeGroup.$beforeEach."None".$afterEach.$afterGroup; } } function next_cat_post($categoryID, $beforeGroup='<ul>', $afterGroup='</ul>', $beforeEach='<li>', $afterEach='</li>', $showtitle=true, $textForEach='Next post in %:<br />') { global $wpdb, $post; // get home url for base of link $info = get_bloginfo('url'); $info = apply_filters('bloginfo', $info); $homeurl = convert_chars($info); // get post id of current post $currentPostId = $post->ID; // get post date of current post $currentPostDate = $post->post_date; // get the catagorys this post uses. $catagoryIds = get_the_category(); $startGroup = true; $currentCat = $categoryID; { // HEAVY LIFTING! Getting the next post. Copy and paste of the // prvious code, but with the sort order and date comparison reversed. $newPostInfo = $wpdb->get_row( "SELECT * FROM $wpdb->posts LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id = $currentCat->cat_ID AND $wpdb->posts.post_date > '$currentPostDate' ORDER BY post_date ASC LIMIT 1"); if ($newPostInfo) { $leaderText = str_replace('%', $currentCat->cat_name, $textForEach); if ($startGroup) { echo $beforeGroup; $startGroup = false; } if ($showtitle) { echo $beforeEach.$leaderText."<a href=\"".get_permalink($newPostInfo->ID)."\">".stripslashes($newPostInfo->post_title)."</a>".$afterEach; } else { echo $beforeEach."<a href=\"".get_permalink($newPostInfo->ID)."\">".$leaderText."</a>".$afterEach; } } } if (!$startGroup) { echo $afterGroup; } else { // RAM: echo None if there is nothing there. echo $beforeGroup.$beforeEach."None".$afterEach.$afterGroup; } } ?>Dann sollte es mit dem klappen:
PHP
Alles anzeigen$special_cats = array('Gothic 1','Risen 1','Simon the Sorcerer'); // die 3 speziellen Kategorien Namen $special_cat = -1; foreach((get_the_category()) as $category) { if (in_array($category->cat_name, $special_cats)) { $special_cat = $category->cat_ID; } } if ($special_cat > -1) { previous_cat_post($special_cat); next_cat_post($special_cat); } else { // User is not in the special categories. }Wahrscheinlich musst du noch html & text anpassen (entweder direkt in den neuen beiden funktionen, oder über die (momentan ausgelassenen) Argumente.
Alles ungetestet.
-
mhm also bei mir kommt nur statt ein link "none" raus...
-
Also er gibt keine. Link/ text aus nur beide Male "None" woran kann das liegen?
-
Es liegt daran, dass ich den code der beiden Funktionen höchstens überflogen haben und ich dabei eine WP-Klasse durch einen Integer ersetzt habe.
Ersetze die beiden Funktionen:
PHP
Alles anzeigenfunction previous_cat_post($categoryID, $beforeGroup='<ul>', $afterGroup='</ul>', $beforeEach='<li>', $afterEach='</li>', $showtitle=true, $textForEach='Previous post in %:<br />') { global $wpdb, $post; // get home url for base of link $info = get_bloginfo('url'); $info = apply_filters('bloginfo', $info); $homeurl = convert_chars($info); // get post id of current post $currentPostId = $post->ID; // get post date of current post $currentPostDate = $post->post_date; $startGroup = true; { // HEAVY LIFTING! Getting the prevous post. Ugh. $newPostInfo = $wpdb->get_row($wpdb->prepare( "SELECT * FROM $wpdb->posts LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id = %d AND $wpdb->posts.post_date < '$currentPostDate' ORDER BY post_date DESC LIMIT 1", $categoryID)); if ($newPostInfo) { $leaderText = str_replace('%', $currentCat->cat_name, $textForEach); if ($startGroup) { echo $beforeGroup; $startGroup = false; } if ($showtitle) { echo $beforeEach.$leaderText."<a href=\"".get_permalink($newPostInfo->ID)."\">".stripslashes($newPostInfo->post_title)."</a>".$afterEach; } else { echo $beforeEach."<a href=\"".get_permalink($newPostInfo->ID)."\">".$leaderText."</a>".$afterEach; } } } if (!$startGroup) { echo $afterGroup; } else { // RAM: echo None if there is nothing there. echo $beforeGroup.$beforeEach."None".$afterEach.$afterGroup; } } function next_cat_post($categoryID, $beforeGroup='<ul>', $afterGroup='</ul>', $beforeEach='<li>', $afterEach='</li>', $showtitle=true, $textForEach='Next post in %:<br />') { global $wpdb, $post; // get home url for base of link $info = get_bloginfo('url'); $info = apply_filters('bloginfo', $info); $homeurl = convert_chars($info); // get post id of current post $currentPostId = $post->ID; // get post date of current post $currentPostDate = $post->post_date; // get the catagorys this post uses. $catagoryIds = get_the_category(); $startGroup = true; { // HEAVY LIFTING! Getting the next post. Copy and paste of the // prvious code, but with the sort order and date comparison reversed. $newPostInfo = $wpdb->get_row($wpdb->prepare( "SELECT * FROM $wpdb->posts LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id = %d AND $wpdb->posts.post_date > '$currentPostDate' ORDER BY post_date ASC LIMIT 1", $categoryID)); if ($newPostInfo) { $leaderText = str_replace('%', $currentCat->cat_name, $textForEach); if ($startGroup) { echo $beforeGroup; $startGroup = false; } if ($showtitle) { echo $beforeEach.$leaderText."<a href=\"".get_permalink($newPostInfo->ID)."\">".stripslashes($newPostInfo->post_title)."</a>".$afterEach; } else { echo $beforeEach."<a href=\"".get_permalink($newPostInfo->ID)."\">".$leaderText."</a>".$afterEach; } } } if (!$startGroup) { echo $afterGroup; } else { // RAM: echo None if there is nothing there. echo $beforeGroup.$beforeEach."None".$afterEach.$afterGroup; } } ?> -
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!