Was ist neu?
Digital Marketing & Webmaster Forum

Digital Marketing, Internet-Technologien, Metaverse und mehr interessieren Dich? Registriere Dich gleich kostenlos, um Mitglied zu werden! Sobald Du angemeldet bist, kannst Du loslegen, Themen und Beiträge veröffentlichen und mit anderen Mitgliedern in Kontakt treten! Wir wünschen Dir einen anregenden Austausch!

Dussels Codeschnipsel für Wordpress

PornoDussel

- Premium Member -
Sofern Interesse besteht, würde ich hier die ein oder anderen Codeschnipsel von mir an alle weitergeben, die es brauchen können bzw. keine Lust haben, sich wegen jeder Kleinigkeit ein Plugin zu besorgen.

Der Code ist für WordPress ( Ich weiß, gehört eigentlich in eine andere Rubrik des Forums. Aber ich und die meisten anderen haben noch keine 50 Beiträge zusammen, daher hier)

So, dann mal das erste Codeschnipsel. Der Code ist noch ein echter Frischling, da ich ihn gerade verbrochen habe ( keine 10 Min. alt, daher nicht zu 100% getestet ). Wenn mal was nicht funktioniert, wäre es schön, wenn man mir das mitteilt. Dann hätte ich auch ein wenig davon ;)

Was der Code macht:

Sicher schon mal auf der ein oder anderen Seite gesehen:

Passende Artikel zu diesem Thema:
- Link zu Artikel sowieso
- Link zu Artikel kennst Du nicht
- Link zu Artikel braucht man nicht
usw.

Der folgende Code macht dieses für Artikel in WordPress - Er zeigt also zu einem Artikel eine Liste mit einer freibestimmbare Anzahl an Links zu weiteren Artikel des Blogs an. Als Linktext wird die Überschrift ( the_title) des jeweiligen Artikel verwendet. Das ganze wird über die Tags von Wordpress gesteuert. Damit das ganze Sinn macht, ist es also sinnvoll, dass man den Artikeln (oder einigen Artikel) Tags zugeordnet hat. Wenn ich z.B. 20 Artikel mit dem Tag BEISPIEL habe, werden hier die ersten X Artikel ausgegeben, die ebenfalls dem Tag BEISPIEL zugeordnet sind.

Über die Variable: $showMax kann man steuern, wie viele Artikel maximal ausgegeben werden sollen.


Um festzulegen, welche Artikel angezeigt werden sollen, hat man verschiedene Möglichkeiten

Artikel des ersten Tags anzeigen

Wenn dem angezeigten Artikel ein Tag zugeordnet wurde, werden die neusten $showMax Artikel gezeigt, die dem gleichen Tag zugeordnet sind. Sind dem Artikel mehrere Tags zugeordnet, wird der erste Tag verwendet. Findet sich kein passender Artikel, wird der Alternativtext angezeigt.


Tag selber bestimmen

Will man Artikel in der Liste anzeigen, die nicht dem ersten Tag zugeordnet sind, oder Artikel zu einem Tag, der dem Artikel überhaupt nicht zugeordnet ist, kann man über die benutzerdefinierbaren Felder einen Tag bestimmen.

Hierfür gibt man bei NAME -> myTagList ein.
Als Wert gibt man entweder die ID des Tags oder den Namen des Tags ein (so wie es einem lieber ist.)

Als Ergebnis werden die neusten $showMax Artikel in der Liste angezeigt, die dem gewählten Tag zugeordnet sind.

Hinweis: Gibt man die ID des Tags ein, läuft das Programm schneller.



Feste Liste von Artikel bestimmen NEU

Man kann auch eine feste Liste von Artikel festlegen, die angezeigt werden sollen.

Hierfür gibt man bei NAME -> myTagList ein.
Als Wert gibt man: only_post=1,2,3 ein

1,2,3 stehen symbolisch für die ID der Artikel. Bei 1,2,3 würden also die Artikel mit der ID 1,2 und 3 angezeigt.
Man kann soviele Artikel anzeigen lassen wie man mag. $showMax wird überschrieben.



Bestimmte Artikel nicht anzeigen NEU

Es ist auch möglich eine beliebige Anzahl von Artikel auszuschließen.

Hierfür gibt man bei NAME -> myTagList ein.
Als Wert gibt man: not_post=1,2,3 ein

1,2,3 stehen symbolisch für die ID der nicht erwünschten Artikel.
Dem Artikel muss ein Tag zugewiesen sein. Es werden die neusten $showMax Artikel angezeigt, die ebenfalls diesem Tag zugeordnet sind.
Bei 1,2,3 würden die neusten $showMax Artikel zum Tag gezeigt die nicht die ID 1,2 und 3 haben. Man kann so viele Artikel ausschließen wie man mag.


Tag selber bestimmen und gleichzeitig Artikel ausschließen NEU

Es ist möglich, einen Tag selber zu bestimmen und gleichzeitig nicht erwünschte Artikel auszuschließen.

Hierfür gibt man bei NAME -> myTagList ein.
Als Wert gibt man: DER_TAG::not_post=1,2,3 ein

DER_TAG steht symbolisch für den Namen des Tags. not_post enthält die Artikel, die nicht erwünscht sind.
Es werden die neusten $showMax Artikel angezeigt, die dem Tag DER_TAG zugeordnet sind, mit Ausnahme der Artikel mit der ID 1,2 und 3. Man kann so viele Artikel ausschließen wie man mag.

Hinweis:
Man kann als Wert auch: not_post=1,2,3:: DER_TAG eingeben. Die Reihenfolge spielt keine Rolle.
Statt den Namen des Tags kann man für DER_TAG auch die ID des Tags angeben. Dann läuft das Programm etwas schneller.




Einbinden des Codes

Damit der Code funktioniert, muss man ihn im Loop angeben!

Also zwischen
PHP:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

und

PHP:
<?php endwhile; ?>

Es ist übrigens sinnvoll, den Code in einem extra File im Verzeichnis .../theme/deinTheme/ zu speichern. Z.B. unter dem Namen: similarposts.php

Mann kann ihn dann mit

PHP:
<?php include  (TEMPLATEPATH . '/ similarposts.php’); ?>

an gewünschter Stelle einbinden. Dadurch hält man sich die Temps übersichtlicher...



Und nun der Code:

PHP:
<?php
 /**
  *  DUSSEL - CODE für wordpress
  *
  *
  *  Einbinden in den LOOP ( also vor endwhile )
  *
  *  Damit darf jeder Dussel und Nichtdussel machen was er will
  *  Ich übernehme natürlich keine Verantwortung für was auch immer
  *
  *  Wer es braucht : Viel Spass damit
  */

$showMax = 5;        // Hier schreibt man hin, wieviele Artikel max. angezeigt werden sollen


$tagString = get_post_meta($post->ID, 'myTagList' , true);
$tagString = trim( $tagString );
$args 	 = ( !($tagString=='none') ) ? FALSE : -1;



function myPostArr( $_postMetaString, $_postArr = array() ) {
	$postArr  = explode( '=', $_postMetaString );
	$postID   = explode( ',', $postArr[1] );

	if( is_array($_postArr) ) $ret = $_postArr;
			          else	$ret = array();

	for($i=0; $i<count($postID); $i++) {
		$nextPostID = trim($postID[$i]);
		if ( preg_match("|^[0-9]+$|i", $nextPostID) )
			$ret[] = $nextPostID;
	}

	return $ret;
}



if( $tagString && eregi("only_post", $tagString) ):
	$postArr = myPostArr( $tagString );
	$args = array(
				'post__in'		  => $postArr,
				'showposts'		 => count( $postArr ),
				'caller_get_posts'      => 1
				 );
endif;



$notPostArr = array( $post->ID );
if( $tagString && eregi("not_post", $tagString) ):
	$_postMetaArr  = explode('::', $tagString);

	for( $i=0; $i<count($_postMetaArr); $i++)
		if( eregi("not_post", $_postMetaArr[$i]) )	$notPostArr = myPostArr( $_postMetaArr[$i], $notPostArr );
										 	 else   $tagString = trim( $_postMetaArr[$i] );

	if( (count($_postMetaArr)==1) ) 
		$tagString = FALSE;
endif;


if( $tagString && !$args ):
	if ( preg_match("|^[0-9]+$|i", $tagString) )
		$tagID = $tagString;
	else
	{
		$postTags = get_tags();
		$tagString = strtolower( $tagString );
		
		if( $postTags )
			foreach ( $postTags as $tagObj ) {
				$_name = strtolower( $tagObj->name );

				if( $_name == $tagString ) {
					$tagID = $tagObj->term_id;
					break;
				}
			}	// FOREACH LOOP
	}


	if( $tagID )
	$args = array( 
					'tag__in' 		  => array( $tagID ),
	    			'post__not_in' 	  =>$notPostArr,
	    			'showposts'       => $showMax,
					'caller_get_posts'=> 1
				 );
endif;

if( !$args )
$args = ( ($tags = wp_get_post_tags($post->ID)) ) 
		? array( 
					'tag__in' 		  => array( $tags[0]->term_id ),
				    'post__not_in' 	  => $notPostArr,
				    'showposts'       => $showMax,
 					'caller_get_posts'=> 1
				)
		: FALSE;

if( $args && ('none' != $tagString )) {
	$my_query = new WP_Query($args);

if( $my_query->have_posts() ) {
/**
 *	Ab hier folgt die Ausgabe
 *  muss man natürlich nach seinen Wünschen anpassen
 */
?>
       
       Ähnliche Artikel oder was weiß ich für HTML...<br>
       
             <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
    
             <!-- Die Links zu den Artikel -->
             <a href="<?php the_permalink() ?>"><?php the_title(); ?></a><br>

   <?php
                  endwhile;
       }
       else
           $args = FALSE;    // Keine Artikel da
           
       wp_reset_query();
   }
   
   if( !$args && ('none' != $tagString) )

   {    // ARGS FALSE
?>
	<!-- Alternativ Text -->
    Es kann auch ein Leben ohne ähnliche Artikel geben
    oder was man sonst noch so als alternative der Menschheit kund tun mag
    
<?php } ?>

So, ich hoffe mal, beim Reinkopieren ins Forum ist vom Code nichts verloren gegangen.

Viel Spass damit

PS: Wer diesen Code in anderen Foren veröfftenliche möchte, sollte so nett sein und auf die Quelle (also dieses Forum) verweisen.
 

PornoDussel

- Premium Member -
Freut mich das es ein paar gibt, die ein wenig Code zu schätzen wissen.

Es gibt schon ein Update für die paar Zeilen oben. Wenn ich später etwas Zeit hab und Bedarf besteht, ändere ich meinen Eingangsthread in nächster Zeit entsprechend ab.

Braucht jemand Code, mit dem man in der Archiv-Ansicht neben dem gekürzten Artikel ein Bildlein anzeigen kann, was man in der index bzw. single nicht sieht? Der kürzt dann gleich den Title auf eine Anzahl an Worten die X Zeichen nicht übersteigen (damit es einzeilig neben das Bild passt)

So etwas habe ich gestern schnell gezaubert – wenn genug Bedarf besteht, vereinfache ich den Code und stelle ihn hier mit ein...
 
Oben