Wordpress - Templates erstellen und anpassen: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 39: Zeile 39:
  
 
== Tipps und Tricks ==
 
== Tipps und Tricks ==
 +
=== Loop an beliebiger Stelle ===
 +
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
 +
<pre>
 +
// 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;
 +
}
 +
 +
?>
 +
</pre>
 +
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 ===
 
=== Kategorien auf Startseite ausschließen ===
 
==== Über functions.php ====
 
==== Über functions.php ====

Version vom 15. Januar 2015, 17:29 Uhr

Child Templates

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ß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.

Minimales Child Theme

  • Ordner mit Template Name erstellen (recommended: meinTemplateName-child)
  • Mindestens style.css und functions.php anlegen
  • Header für style.css
/*
 Theme Name:   Twenty Fifteen Child
 Theme URI:    http://example.com/twenty-fifteen-child/
 Description:  Twenty Fifteen Child Theme
 Author:       John Doe
 Author URI:   http://example.com
 Template:     name_of_parent_template_folder
 Version:      1.0.0
 License:      GNU General Public License v2 or later
 License URI:  http://www.gnu.org/licenses/gpl-2.0.html
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
 Text Domain:  twenty-fifteen-child
*/
  • Enqeue Parent and Child Theme Styles

functions.php

add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( 'parent-style' ) );
}

Tipps und Tricks

Loop an beliebiger Stelle

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

Über functions.php

<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

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