Posts Categorized: Wordpress

Besitzrecht ftp-User oder www-data? Probleme via .htaccess umgehen

Manche Webhoster (u.a. all-inkl) unterscheiden zwischen dem ftp-User und dem php-User (www-data), der die Skripte ausführt. Das kann manchmal zu Problemen führen. Die Lösung: Besitzrechte auf den ftp-User stellen und in der .htaccess eine Zeile einfügen:

1
AddHandler php5-cgi .php
AddHandler php5-cgi .php

Gegebenenfalls die 5 mit der verwendeten php-Version austauschen.

Quelle: http://hannes-schurig.de/04/06/2009/probleme-mit-ftp-besitzrechten-via-htaccess-umgehen/

WordPress: an Artikel angehängtes pdf anzeigen

Wenn man ein an einen Artikel angehöngtes pdf-Dokument in WordPress anzeigen will, genügt eine kleine Abänderung des Codes zum Anzeigen von Artikelbildern.

In die funktions.php kommt:

1
2
3
4
5
6
7
8
9
10
11
12
13
// get the first PDF attached to the current post
function my_theme_get_post_pdf() {
    global $post;
 
    $attachments = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'application/pdf', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
 
    if ($attachments) { 
        $attachment = array_shift($attachments);
        return wp_get_attachment_url($attachment->ID);
    }
 
    return false;
}
// get the first PDF attached to the current post
function my_theme_get_post_pdf() {
	global $post;

	$attachments = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'application/pdf', 'order' => 'ASC', 'orderby' => 'menu_order ID') );

	if ($attachments) { 
		$attachment = array_shift($attachments);
		return wp_get_attachment_url($attachment->ID);
	}

	return false;
}

Und im Theme an die entsprechende Stelle:

1
$pdf = my_theme_get_post_pdf();
$pdf = my_theme_get_post_pdf();

WordPress: erstes Artikelbild anzeigen

Um nur das erste Bild, der einem Artikel zugeordneten Bilder anzuzeigen, eigentlich sich dieser Code:

In der functions.php:

1
2
3
4
5
6
7
8
9
10
11
12
function my_theme_get_post_image($size = 'thumbnail') {
    global $post;
 
    $photos = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
    
    if ($photos) {
        $photo = array_shift($photos);
        return wp_get_attachment_image($photo->ID, $size);
    }
    
    return false;
}
function my_theme_get_post_image($size = 'thumbnail') {
	global $post;

	$photos = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
	
	if ($photos) {
		$photo = array_shift($photos);
		return wp_get_attachment_image($photo->ID, $size);
	}
	
	return false;
}

Aufrufen lässt sich das Bild dann im Theme mit:

1
$photo = my_theme_get_post_image();
$photo = my_theme_get_post_image();

Credits an John Ford für diesen Code.

WordPress: Selbst-Ping bei internen Links vermeiden

Wer den WordPress Update-Service nutzt um anderen Diensten bescheid zu geben, wenn ein neuer Artikel veröffentlicht wurde, kennt das Problem: sobald im Artikel ein interner Link vorhanden ist, pingt man sich selbst. Äußerst nervige Angelegenheit. Lässt sich aber schnell beheben.

Einfach in der funktions.php des aktiven Templates folgendens einfügen:

1
2
3
4
5
6
7
8
function no_self_ping (&$links) {
$home = get_option( 'home' );
foreach ( $links as $l => $link )
    if ( 0 === strpos( $link, $home ) )
        unset($links[$l]);
}
 
add_action( 'pre_ping', 'no_self_ping' );
function no_self_ping (&$links) {
$home = get_option( 'home' );
foreach ( $links as $l => $link )
    if ( 0 === strpos( $link, $home ) )
        unset($links[$l]);
}
 
add_action( 'pre_ping', 'no_self_ping' );

Bilder mit Attributen aus WordPress Posts laden

Eine kleine Erweiterung für  den Artikel zum Laden von Bildern aus WordPress Posts: zusammen mit dem Bild werden noch URL zum Attachment, der Titel, die Description und die Caption (Bildbeschreibung geladen).

In die functions.php kommt diesmal:

1
2
3
4
5
6
// get all of the images attached to the current post
function aldenta_get_images($size = 'thumbnail') {
    global $post;
 
    return get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
}
// get all of the images attached to the current post
function aldenta_get_images($size = 'thumbnail') {
	global $post;
 
	return get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
}

Und in das Theme an die entsprechende Stelle der Seite:

1
2
3
4
5
6
7
8
9
10
11
if ($images = aldenta_get_images()) {
    foreach ($images as $image) {
 
echo wp_get_attachment_url($image->ID); // attachment url
echo wp_get_attachment_image($image->ID, 'thumbnail'); // thumbnail image
        echo $image->post_title;   // title
        echo $image->post_content; // description
        echo $image->post_excerpt; // caption
 
    }
}
if ($images = aldenta_get_images()) {
	foreach ($images as $image) {
 
echo wp_get_attachment_url($image->ID); // attachment url
echo wp_get_attachment_image($image->ID, 'thumbnail'); // thumbnail image
		echo $image->post_title;   // title
		echo $image->post_content; // description
		echo $image->post_excerpt; // caption
 
	}
}

Entsprechend verschachtelt kann man sich damit schöne Dinge zusammenbauen :-)

Bilder aus WordPress Posts anzeigen

Um Bilder aus WordPress Posts auf einer Übersichtsseite oder der Startseite anzuzeigen muss man ein bisschen tricksen, aber es funktioniert einwandfrei. Ich generiere so meine Galerien in den Archivseiten. Der Code stammt von John Ford.
Zunächst in die functions.php diesen Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function my_theme_get_images($size = 'thumbnail') {
    global $post;
 
    $photos = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
 
    $results = array();
 
    if ($photos) {
        foreach ($photos as $photo) {
            // get the correct image html for the selected size
            $results[] = wp_get_attachment_image($photo->ID, $size);
        }
    }
 
    return $results;
}
function my_theme_get_images($size = 'thumbnail') {
	global $post;
 
	$photos = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
 
	$results = array();
 
	if ($photos) {
		foreach ($photos as $photo) {
			// get the correct image html for the selected size
			$results[] = wp_get_attachment_image($photo->ID, $size);
		}
	}
 
	return $results;
}

Die Fotos anzeigen kann man mit diesem Codeschnipsel, der im Theme an die entsprechende Stelle der Seite platziert wird:

1
2
3
4
5
6
7
$photos = my_theme_get_images('full');
 
if ($photos) {
    foreach ($photos as $photo) {
        echo "$photo<br />";
    }
}
$photos = my_theme_get_images('full');
 
if ($photos) {
	foreach ($photos as $photo) {
		echo "$photo<br />";
	}
}