PHP Mail Log – Absendendes Script finden

Wer schonmal ein angegriffenes System hatte, welches zum spammen missbraucht wurde, weiß wie nervig es ist alle Spuren zu entdecken. Die Mail Queue füllt sich, aber man findet nirgends die Quelle.

Seit PHP 5.3 gibt es eine neuen Option die den PhPmailer gesprächig macht.

Durch folgende option in der php.ini kann das loggen von Mails inklsuvie ausführendes Script aktiviert werden.

;PHP.INI /etc/php5/apache2/php.ini bearbeiten
mail.add_x_header = On
mail.log = /var/log/phpmail.log

Apache neustarten und ab jetzt werden alle Mailaktionen geloggt.

/etc/init.d/apache2 restart

Ein Beispiel Eintrag sieht dann so aus – gleich am Anfang steht nun das absendende Script. 

mail() on [/var/www/schnipsellager.de/wp-includes/class-phpmailer.php:652]: To: XXX@xxx:COM — Headers: Date: Sun, 23 Aug 2015 17:36:26 +0000 From: WordPress <wordpress@schnipsellager.de> Message-ID: <fafa1faa791bcdfe17fc4933610231c1@schnipsellager.de> X-Priority: 3 X-Mailer: PHPMailer 5.2.10 (https://github.com/PHPMailer/PHPMailer/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit

WordPress: Kategorien aus der Suche ausschließen

Die WordPress Suche durchsucht von Haus aus, alle Posts und Seiten. Möchtest du aber eine bestimmte Kategorie von der Suche ausschließen, so ist dies problemlos mit einem kurzen Schnipsel möglich.

Die IDs der jeweiligen Kategorie bekommt ihr im Admin beim Editieren raus. Wählt eine Kategorie zum bearbeiten aus und schaut anschließend in die Browserleiste. Dort solltet ihr etwas sehen wie blablabl&TAG_id=3.
Habt ihr die IDs der Kategorien die ihr ausschließen wollt, öffnet die functions.php eures Themes und fügt folgenden Code ein (natürlich Kategorie IDs ersetzen):

function sl_filtercats($query) {
  if ( $query->is_search) {
    $query->set('cat','-3'); 
  }
  return $query; 
}
add_filter('pre_get_posts','sl_filtercats');

WordPress: Login Dauer erhöhen – 1 Jahr eingeloggt bleiben

Wer einen gut gesicherten PC hat der nicht viel unterwegs ist, kann auch gern den Luxus genießen sich nicht ständig in seinen Admin neu einloggen zu müssen. Mit folgendem Schnipsel könnt ihr die Cookie Laufzeit vom Login Cookie auf 1 Jahr hochsetzen.

Einfach folgenden Code in die functions.php eures Themes.
 

add_filter( 'auth_cookie_expiration', 'sl_login_duration' );
function sl_login_duration($expire) {
  return 31556926; // 1 Jahr in Sekunden
}

WordPress: Login Logo und Url ändern

sl-loginVor allem bei Kundenprojekten ist es schön, wenn man den Login von WordPress anpasst.

Statt dem Standard WordPress Logo und der Verlinkung zu WordPress.org kann man schnell und einfach seine eigenen Inhalte nutzen. Die CI wirds danken.

Die Umsetzung ist denkbar einfach, nur den kurzen Schnipsel in die functions.php eures Themes und ihr genießt einen neuen Login.

// Css für .logo h1 a wird überschrieben. 
// Breite auf 300px gesetzt, Hintergrundbild verändert und als Background-size Contain verwendet. 
   function sl_login_logo() {
    echo '<style type="text/css">.login h1 a { background-image:url("https://schnipsellager.de/wp-content/uploads/2015/08/sl-login-logo.png") !important; width: 300px; background-size: contain; } </style>';
   }
   add_action('login_head', 'sl_login_logo');

   // Login Url wird auf die Blogurl geändert. (Original: WordPress.org)
   function change_wp_login_url() {
   echo bloginfo('url'); 
   }
   // Der Titel des Hrefs wird angepasst. 
   //Nun steht euer Blogname Statt WordPress. org
   function change_wp_login_title() {
    echo get_option('blogname'); 
   }
   
   add_filter('login_headerurl', 'change_wp_login_url');
   add_filter('login_headertitle', 'change_wp_login_title');

[WordPress] Shortcodes in Widgets nutzen

Standardmäßig sind die praktischen Shortcodes in den Sidebar Widgets nicht ausführbar. Sehr schade, denn die kleinen Code schnipsel ermöglichen doch allerhand tolle Spierelerein. So können allerhand Plugins durch die Codes Inhalte ausgeben und lassen sich so perfekt positionieren.

Die Abhilfe:

Die Lösung ist denkbar einfach, denn die Macher von WP haben alles dafür vorbereitet, dass die Shortcodes eben auch in den Widgets ausführbar sind.

add_filter('widget_text', 'do_shortcode');

Einfach diese Zeile in die functions.php eures Themes kopieren und der Shortcode kann ich ein normales „Text Widget“ eingefügt werden.

 

WordPress: Shortcode für Ausgabe von Custom Post Type erstellen

WordPress Custom Post Types sind eine geniale Sache, schnell wird durch diese aus dem einfachen WordPress Baustein ein mächtiges und angepasstes Portal.

Angenommen ihr wollt z.b. die Sponsoren eures Fußballvereins einfach verwalten und an speziellen Stellen einen dieser ausgeben, dann bietet es sich an dafür einen Shortcode mit integrierter Abfrage zu erstellen. Dann könnt ihr an beliebiger Stelle einfach den Shortcode

[sponsor-listing anzahl="3"]

einfügen und bekommt dort 3 zufällige Sponsoren ausgegeben. Damit das ganze Funktioniert sollte natürlich der Entsprechende Custom Post Type vorhanden sein.

// Register Custom Post Type
function sl_sponsoren_register() {

	$labels = array(
		'name'                => 'Sponsoren',
		'singular_name'       => 'Sponsor',
		'menu_name'           => 'Sponsoren',
		'name_admin_bar'      => 'Sponsoren',
		'parent_item_colon'   => 'Sponsor',
		'all_items'           => 'alle Sponsoren',
		'add_new_item'        => 'neuen Sponsor erstellen',
		'add_new'             => 'Neuen Sponsor',
		'new_item'            => 'neuer Sponsor',
		'edit_item'           => 'Sponsor bearbeiten',
		'update_item'         => 'Sponsor Speichern',
		'view_item'           => 'Sponsor anzeigen',
		'search_items'        => 'Sponsor suchen',
		'not_found'           => 'nichts gefunden',
		'not_found_in_trash'  => 'nichts gefunden',
	);
	$args = array(
		'label'               => 'Sponsor',
		'description'         => 'Sponsoren',
		'labels'              => $labels,
		'supports'            => array( ),
		'hierarchical'        => false,
		'public'              => true,
		'show_ui'             => true,
		'show_in_menu'        => true,
		'menu_position'       => 5,
		'show_in_admin_bar'   => true,
		'show_in_nav_menus'   => true,
		'can_export'          => true,
		'has_archive'         => true,		
		'exclude_from_search' => false,
		'publicly_queryable'  => true,
		'capability_type'     => 'page',
	);
	register_post_type( 'sponsor', $args );

}
add_action( 'init', 'sl_sponsoren_register', 0 );

Der Posttype sollte in eurer functions.php registiert sein (oder natürlich in einem Plugin).

In der functions.php erstellen wir nun einen Shortcode, der es uns ermöglicht eine Query durch unsere Sponsoren auszuführen:

add_shortcode( 'sponsor-listing', 'sl_sponsorlisting' );
function sl_sponsorlisting( $atts ) {
    ob_start();
 
    // Attribute holen
    extract( shortcode_atts( array (
        'anzahl' => 'anzahl'
      ), $atts ) );
 
    $options = array(
        'post_type' => 'sponsor',
        'orderby' => 'rand',
        'posts_per_page' => $anzahl,
    );
    $query = new WP_Query( $options );
    if ( $query->have_posts() ) { 
             the_content(); 
   
        return = ob_get_clean();
    }
}

[Mysql] eigene Sortierung – Order by Field

Datenbanken sind Klasse – vor allem die Möglichkeiten Datensätze direkt in die richtige Reihenfolge zu bringen.
Und selbst wenn einem einmal nicht die Standart Sortierung von groß nach klein oder von klein nach groß eignet so bietet Mysql noch das I-Tüpfelchen.
Sort by field

SELECT * FROM aufstellung ORDER by 
        Field(spielposition, 'Torwart', 'Abwehr', 'Mittelfeld', 'Angriff');

 
Damit selektieren wir alle Spieler auf der Datenbank Aufstellung und sortieren sie nach der Reihenfolge der Position wie sie auf dem Platz vorkommen.