Wordpress - Templates erstellen und anpassen
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.
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