Wordpress - Templates erstellen und anpassen

Aus Wikizone
Version vom 31. März 2015, 10:59 Uhr von 37.49.33.84 (Diskussion) (→‎Minimales Child Theme)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Child Themes[Bearbeiten]

Siehe auch Wordpress - Child Themes

http://codex.wordpress.org/Child_Themes

Wichtig für Update Sicherheit. In Child Themes kann man die Dateien des Parent-Themes einfach überschreiben. Alle Dateien die im Child sind werden statt dem des Parent Themes verwendet (außer die function.php).

Außerdem kannst du auch zusätzliche Template-Dateien einfügen. Wenn du für dein Child Theme z.B. eine eigene Homeseite nutzen möchtest, legst du einfach eine neue Template-Datei namens home.php in deinem Child Theme an. Beim Anlegen der Homeseite im Adminbereich, kannst du dann das Home-Template für diese Seite auswählen.

Wenn du eine eigene functions.php Datei für dein Child Theme anlegst, werden die Inhalte vor den Inhalten der functions.php Datei des Parent Themes aufgerufen. Auf diese Weise kannst du mit Hilfe der Child Theme Option zusätzliche PHP-Funktionen zu einem Theme hinzufügen.

Tipps und Tricks[Bearbeiten]

Loop an beliebiger Stelle[Bearbeiten]

Quelle: https://www.seedprod.com/wordpress-the-loop-shortcode/ (2015-01) Hiermit kann man z.B. die letzten Posts an beliebiger Stelle auf einer Seite per Shortcode bereitstellen.

I went searching the other night for a WordPress loop shortcode. I was surprised to find that there were none out there, so I made one. Use this shortcode below to create a loop on a page , post , or sidebar (with some tweaks). Insert in your functions.php or you can create a plugin for it. I have a plugin where I put all my shortcodes and that works quite well.

functions.php

// The Loop
/*
* Usage: loop category="news" query="" pagination="false"
*/

<?php
add_shortcode("loop", "myLoop");

function myLoop($atts, $content = null) {
	extract(shortcode_atts(array(
	"pagination" => 'true',
	"query" => '',
	"category" => '',
	), $atts));
	
	global $wp_query,$paged,$post;
	$temp = $wp_query;
	$wp_query= null;
	$wp_query = new WP_Query();
	if($pagination == 'true'){
		$query .= '&paged='.$paged;
	}
	if(!empty($category)){
		$query .= '&category_name='.$category;
	}
	if(!empty($query)){
		$query .= $query;
	}
	$wp_query->query($query);
	ob_start();
	?>
	<ul class="loop">
		<?php have_posts()) : $wp_query->the_post(); ?>
		<li><a href="" rel="bookmark"></li>
		<?php endwhile; ?>
	</ul>
	<?php if($pagination == 'true'){ ?>
	<div class="navigation">
	  <div class="alignleft"><?php previous_posts_link('« Previous') ?></div>
	  <div class="alignright"><?php next_posts_link('More »') ?></div>
	</div>
	<?php } ?>
	<?php 
	$wp_query = null; 
	$wp_query = $temp;
	wp_reset_query();
	$content = ob_get_contents();
	ob_end_clean();
	
	return $content;
}

?>

Eingebaut wird es dann im Editor auf diese Weise:

[loop category="news" query="" pagination="false"]

Wie man sieht, kann man die Kategorie wählen, die Paginierung ein und ausschalten und ggfs. den Loop noch erweitern.


Kategorien auf Startseite ausschließen[Bearbeiten]

Über functions.php[Bearbeiten]

<pre'>

function exclude_category_home( $query ) {

   if ( $query->is_home ) {
       $query->set( 'cat', '-5, -34' );
   }
   return $query;

}

add_filter( 'pre_get_posts', 'exclude_category_home' );

In Zeile 3 der oben markierten Codezeile fügst Du die ID’s der Kategorien ein, die Du von der Startseite ausschließen möchtest. Wenn Du nicht weißt, wie Du die ID Deiner Kategorien herausfindest, wird Dir 30-sekündiges Video sicherlich Licht ins Dunkle bringen:

Geändert Zeit statt erstellt Zeit für Posts anzeigen[Bearbeiten]

Für das Post Datum nutzt Wordpress die Variable the_time bzw. die Funktion get_the_time()

Normalerweise reicht es die Variable the_time mit the_modified_time zu ersetzen.

Relevante Dateien sind:

single.php
index.php
page.php

oder auch

functions.php