Kategorien
Amazon AWS WordPress

WordPress Bitnami Banner entfernen auf AWS AMI

Um den Bitnami Banner entfernen zu können, soll man per SSH einen Konsolenbefehl ausführen:

sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1

dies führte bei mir zu einer Fehlermeldung, dass die Datei bnconfig nicht vorhanden ist:

sudo: /opt/bitnami/apps/wordpress/bnconfig: command not found

Die Ursache ist, dass die Datei standradmäßig erst deaktiviert ist, es gibt eine /opt/bitnami/apps/wordpress/bnconfig.disabled

Diese muss aktiviert werden, indem sie umbenannt wird nach bnconfig:

sudo mv /opt/bitnami/apps/wordpress/bnconfig.disabled /opt/bitnami/apps/wordpress/bnconfig

Danach kann der Banner erfolgreich entfernt werden:

sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1
Kategorien
WordPress

WordPress Posts mit Links autoamtisch als Spam markieren

Damit man von dn ganzen Spam Bots nicht genervt wird, deren Zie es immer ist einen Kommentar mit einem oder mehreren Links auf ener Webseite zu platzieren, habe ich ein kurzes Skript geschrieben, was in die function.php eingefügt werden muss. Das Skript markiert alle Kommentare als Spam, die einen Link enthalten.

add_action( 'comment_post', 'show_message_function', 10, 2 );
function show_message_function( $comment_ID, $comment_approved ) {
   $comment = get_comment( $comment_ID);
   if(!empty($comment)){
      $content = $comment->comment_content;
      if(!empty($content)){
         $content = strtolower($content);
         $hasLink = strpos($content, 'http') !== false || strpos($content, 'www.') !== false || strpos($content, 'href') !== false;
         if($hasLink){
            //when has link, set to spam
            $commentarr = array();
            $commentarr['comment_ID'] = $comment_ID;
            $commentarr['comment_approved'] = 'spam';
            wp_update_comment( $commentarr );
         }
      }

   }

}
Kategorien
WordPress

WordPress Test Daten für die Entwicklung einspielen

Bei der Theme-Entwicklung ist es sehr praktisch Testdaten zu haben, wie mehrer Posts, die in bestimmten Formate und Sonderinhalten, wie z.B. Videos daher kommen.

Es gibt zwei Möglichkeiten Testdaten in das System zu importieren:

1. Den Import eines festgelegten Datensätzen mittels des Importer Plugin, z.B.

https://wpcom-themes.svn.automattic.com/demo/theme-unit-test-data.xml

oder

2. über ein Plugin zur Erzeugung von einer konfigurierbaren Menge von Post, Usern und Kommentaren, bpsw.: Demo Data Creator

 

Kategorien
WordPress

WordPress Paragraph Tags werden nicht eingefügt

Man kann sehr einfach über das Problem stolpern, dass die <p>-Tags (Paragrapgh-Tags) nicht automatisch im Blog eingefügt werden.

Um das Problem zu lösen, musste man einfach die Hook vorher ausführen, die die Paragraph Tags setzt:

$content = get_the_content();

echo  apply_filters('the_content', $content);

Dies ergab sich dadurch, dass der Content noch nach iso kodiert werden musste. Ansosnten wäre die Funktion the_content() die richtige Wahl gewesen, die das automatisch erledigt.

Dies is bei mir passiert, bei der Verwendung von WordPress ohne ein Theme sondern nur als Content-Lieferant mittels:

define('WP_USE_THEMES', false);
Kategorien
WordPress Yii Framework

WordPress Integration in Yii Projekt

Wenn man einen WordPress Blog in das Yii Framework intgrieren will und das Layout der Seite behalten will, bietet WordPress die Möglichkeit, die WordPress API zu benutzen ohne ein Theme erstellen zu müssen.

Der Blog/News Bereich soll unter der Adresse: foo.com/news/ erreichbar sein.

WordPress hochladen

WordPress kann wie gewohnt installiert werden und sollte in der Ordner-Hierachie in folgendes Verzeichnis auf selbr Ebene, wie das Yii-Projekt entpackt werden:

yii-project
  assets
  protected
wordpress

Als Datenbank sollte die selber benutzt werden, wie das Yii-Projekt und alle Worpdress-Tabellen sollten ein Prefix erhalten (standardmäßig „wp_“ in der wp-config).

Nachdem man die wp-config angepasst hat, muss noch das Routing von Yii angepasst werden vor der Installation von WordPress.

Yii Controller anlegen

Kategorien
WordPress

WordPress versteckte erweiterte Optionen anzeigen / ändern

versteckt sich unter

/wp-admin/options.php

Einfach im Browser öffnen.

Oder die Datenbank Tabelle wp-options ändern.

Kategorien
WordPress

WordPress fehlende paragraph Tags im Content

Wenn sich WordPress entscheidet, keine <p> Paragraph-Tags mehr auszugeben auf der Webseite,kann dies behoben werden mit der Funktion wpautop():

<?php echo wpautop(get_the_content(),0); ?>
Kategorien
WordPress

WordPress Pagination funktioniert nicht

Wenn die Paginierung/Pagination nicht mehr funktioniert, kann das an einem Aufruf der Funktion query_posts() liegen, da diese den Main-Loop verändert.

Anstelle der Funktion sollte get_posts() verwendet werden.

Kategorien
WordPress

WordPress Posts mit Custom Field finden

Mit einem einfach Query lassen sich Posts mit einem bestimmten custom-field suchen und ausgeben. Die Posts werden zusätzlich nach dem Erscheinungsdatum sortiert.

$my_custom_field = 'my_cool_custom_field';

$queryCustomField = new WP_Query(
    array (
        'meta_key' => $my_custom_field,
        'orderby' => 'date',
        'order' => 'DESC',
        'posts_per_page' => 5,
        'post_status' => array( 'publish')
    )
);

while ($queryCustomField->have_posts()) :;
    $queryCustomField->the_post();
    $my_custom_field = get_post_meta($post->ID, $my_custom_field, true);
endwhile;

wp_reset_postdata();
Kategorien
WordPress

WordPress: Kategorien ermitteln mit den meisten Artikeln innerhalb x Tage

Um eine solche Abfrage zu realisieren, braucht es ein wenig MySQL in Verbindung mit WordPress. Mit der Funktion getCategoriesWithMostArticlesInLastDays() kann man die beliebtesten X Kategorien innerhalb der letzten Y Tage bestimmen:

function getCategoriesWithMostArticlesInLastDays($categoriesCount, $lastDaysCount)
{
    global $wpdb;
    $querystr = "
    SELECT $wpdb->terms.name AS categoryName,COUNT($wpdb->terms.term_id) AS countCategory, $wpdb->terms.term_id as categoryId
    FROM $wpdb->posts
        LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
        LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
        LEFT JOIN $wpdb->terms ON ($wpdb->terms.term_id = $wpdb->term_taxonomy.term_id)
    WHERE
        $wpdb->posts.post_status = 'publish'
        AND $wpdb->posts.post_type = 'post'
        AND $wpdb->posts.post_date > TIMESTAMP(DATE_SUB(NOW(), INTERVAL $lastDaysCount DAY ))
        AND $wpdb->term_taxonomy.taxonomy = 'category'
    GROUP BY $wpdb->terms.term_id
    ORDER BY COUNT($wpdb->terms.term_id) DESC
    LIMIT $categoriesCount
";
    $categoriesWithMostArticlesInLastDays = $wpdb->get_results($querystr, ARRAY_A);
    foreach($categoriesWithMostArticlesInLastDays as  $key => $category)
    {
        $categoriesWithMostArticlesInLastDays[$key]["link"] = get_category_link($category['categoryId']);
    }
    return $categoriesWithMostArticlesInLastDays;
}