Archiv des Autors: tillbortels

Externe Links automatisch in neuem Fenster öffnen [jQuery-Snippet]

Externe Links automatisch in neuem Fenster öffnen [jQuery-Snippet]

Screenshot / Montage: T.Bortels/cpu20.de

Auf wohl so gut wie jeder Webseite sind externe Links zu finden. Und häufig wird gewünscht, dass sich externe Links in einem neuen Fenster öffenen –zum Beispiel um die Besucher der Webseite über einen solchen externen Link nicht zu verlieren. Über die Target-Anweisung „_blank“ lässt sich das auch ganz komfortabel bewerkstelligen. Doch wie kann man sicherstellen, dass sich immer alle externen Links in einem neuen Fenster öffnen?

Mal werden externe Links im CMS komfortabel über eigene Eingabefelde verwaltet, aber häufig sind extrne Links im Content der Seite zu finden – im Fließtext. Die Links werden dann über den Text-Editor angelegt – und da kommt es immer wieder vor, dass es die Redaktion versäumt, den Link als externen Link zu markieren bzw. das Häkchen für die Target-Anweisung „_blank“ zu setzen.

Mithilfe den folgenden kleinen jQuery Code Schnippsels läßt sich dieses Problem komfortabel beseitigen:

<script>
jQuery("html a[href^=http]").each(function(){
    if(this.href.indexOf(location.hostname) == -1) {
        jQuery(this).attr({
            target: "_blank",
            title: "Opens in a new window"
        });
    }
});
</script>

Zuerst such das Skript nach allen Linkelementen, die „http“ enthalten. Lokale Links, die direkt mit dem Top-Verzeichnis und nicht mit dem Domainnamen beginnen, werden also von vorneherein ignoriert. In der zweiten Zeile wird geprüft, ob der angegebene Hostname bzw. die im Link aufgeführe Domain von der DOmain abweicht, auf der sich das Skript befindet. Der nachfolgende Code wird also nur auf Links angewendet, die auf andere Webseiten verweisen, als die eigene.

In den folgenden zwei Zeilen wird den Links die Target-Anweisung „_blank“ sowie ein Title-Tag mit dem Hinweis „Opens in a new window“ hinzugefügt. Damit haben wir das Grundproblem bereis behoben: alle externen Links werden nun in einem neuen Fenster geöffnet.

Im folgenden kommen noch zwei weitere Code-Schnippsel hinzu, die ggf. ganz praktisch sein könnnen, wenn man das Design externer Links per CSS anders gestalten möchte, als interne Links.Diesmal bezieht sich das Skript allerdings exemplarisch nicht auf den gesamten HTML Code der Seite, sondern ausschließlich auf die Inhalte, die sich innerhalb des DIV-Containers mit der Klasse „entry-content“ befinden.

Der erste Teil bleibt  also wie er ist – nur die Auswahl wurde hier exemplarisch auf den DIV-Container mit der Klasse „entry-content“ eingeschränkt.

Es folgt ein Einzeiler, der allen externen Links bzw. allen Links, die sich in einem neuen Fenster öffnen, die CSS-Klasse „external“ hinzufügt. Somit könnte der Link bereits jetzt ein eigenes Design erhalten.

Um die Sache noch ein wenig komfortabler zu machen wird nun in dem dritten Code-Schnippsel noch ein SPAN-Container in den Link eingebaut. Somit ließe sich beispielweise durch den ::before-Selector oder den ::after-Selector dem Link ein Pictogramm hinzufügen, das visuell darauf hinweist, dass man bei Klick auf den Link die Seite in einem neuen Fenstern verlässt.

<script>
jQuery(".entry-content a[href^=http]").each(function(){
    if(this.href.indexOf(location.hostname) == -1) {
        jQuery(this).attr({
            target: "_blank",
            title: "Opens in a new window"
        });
    }
});

jQuery('.entry-content a[target="_blank"]').addClass('external');


jQuery('.entry-content a.external').each(function(){
    jQuery(this).each(function(){
      jQuery(this).wrapInner('<span></span>');
    });      
});
</script>

Und das wars schon. So lassen sich externe Links mithilfe eines kleinen jQuery-Snippets automatisch in neuem Fenster öffnen.

SEOPress Metabox unter die ACF Felder bewegen

SEOPress unter die ACF Felder bewegen:

/* move SEOPress meta box down */
add_action( 'add_meta_boxes', function() {
global $wp_meta_boxes;

$post_type = 'page';

// Get seopress meta boxes
$seopress_meta_box = $wp_meta_boxes[$post_type]['normal']['high']['seopress_cpt'];
$seopress_analysis_meta_box = $wp_meta_boxes[$post_type]['normal']['high']['seopress_content_analysis'];

unset( $wp_meta_boxes[$post_type]['normal']['high']['seopress_cpt'] );
unset( $wp_meta_boxes[$post_type]['normal']['high']['seopress_content_analysis'] );

// Move it to 'advanced' location with 'low' priority.
if ( empty( $wp_meta_boxes[$post_type]['advanced'] ) ) {
$wp_meta_boxes[$post_type]['advanced'] = [];
}
if ( empty( $wp_meta_boxes[$post_type]['advanced']['low'] ) ) {
$wp_meta_boxes[$post_type]['advanced']['low'] = [];
}
$wp_meta_boxes[$post_type]['advanced']['low']['seopress_cpt'] = $seopress_meta_box;
$wp_meta_boxes[$post_type]['advanced']['low']['seopress_content_analysis'] = $seopress_analysis_meta_box;

}, 99 );

In Anlehnung an „WordPress: Change meta box location“
https://deluxeblogtips.com/wordpress-change-meta-box-location/

Siehe auch „Moving meta boxes in admin“
https://wordpress.stackexchange.com/questions/166825/moving-meta-boxes-in-admin

Und auch hier: „How to reorder meta box position?“
https://wordpress.stackexchange.com/questions/57897/how-to-reorder-meta-box-position

WordPress Dashboard-Felder ‚Boxen über „Ansicht anpassen“ hinzufügen‘ entfernen

Im Plugin White Label CMS > “Einstellungen Tab” > “Custom CSS for Admin” folgenden CSS-Code hinzufügen:

#dashboard-widgets .postbox-container .empty-container{
    display: none;
}

Oder den CSS-Code in einem eigenen Stylesheet hinterlegen, das im Admin-Bereich geladen wird.

Die Lösung habe ich hier gefunden:

https://wordpress.org/support/topic/remove-add-boxes-from-the-screen-options-menu/

MailPoet: Newsletter Layout linksbündig einrichten (align left)

Newsletter Layout align: left

Newsletter Layout align: left - Illustration: T.Bortels/cpu20.de

Nachdem mir das letzte MailPoet-Update nun mein schön modifiziertes Newsletter-Temnplate zerschossen hat sehe ich mich genötigt, die Anpssung mal zu dokumentieren, sodass ich beim nächsten Update nicht ganz so lange suchen muß.

Aber erstmal von vorne.

Ich benutze das WordPress Plugin MailPoet zum Versenden von Newsletter. Oder besser gesagt: einige meiner Kunden nutzen MailPoet als Newsletter-Tool – und ich helfe ihnen dabei.

Warum Mailpoet? Datenschutz und Datenhoheit

MailPoet bietet aus meiner Sicht eine Reihe von Vorteilen, die ich bei anderen Newsletter-Tools vermitte – allen voran die Möglichkeit, die Versendung der Newsletter über den eigenen Server vorzunehmen. Und daran anschließend auch den Umstand, daß die Liste der Newsletter-Abonnenten lokal auf dem Server des Kunden gespeichert ist. Das bietet uns vor allem Vorteile beim Datenschutz – es werden keine Adressen weitergegeben – nicht in die USA und auch nicht an irgendeinen anderen Dritten. Der Newsletter kann also relativ unkompliziert unter den Bedingen der Datenschutz-Grundverordnung betrieben werden – die Seite bleibt trotz Newsletter DSGVO-konform.

Newsletter im Design der Webseite

Natürlich möchte man, dass der Newsletter dem Design der Webseite entspricht. Das ist aber manchmal gar nicht so einfach. Während sich beim Webdesign in den letzten jahren viel getan hat bewegen sich die Möglichkeiten der Newsletter-Gestaltung noch auf dem gefühlten Niveau der späten Neunzigerjahre. Bilder, Tabellen und einige CSS-Anweisungen gehen – alles andere funktioniert nicht so richtig zuverlässig. Umso hilfreicher ist es da, wenn man ein komfortables Tool nutzen kann, das einem die Arbeit erleichtert. Schließlich soll sich die Redaktion ja auf das Texten und das Zusammenstellen des Newsletters kümmern – für die Gestaltung gibt es Templates.

Das klappt soweit auch ganz gut. Nun gab es allerdings folgendes Problem: Bei einem meiner Kunden sollte das Layout linksbündig sitzen, da die Webseite ebenfalls linksbündig sitzt. Es scheint aber leider üblich geworden zu sein, dass das Layout von Newslettern mittig sitzt. Was tun? Na klar, das Template entsprechend anpassen. Leider ist das in MailPoet aber gar nicht so einfach. Man kann zwar Templates bearbeiten, exportieren und importieren – der Teil, der für die Orientierung des Layouts zuständig ist sitzt aber außerhalb des Templates. Egal, wie sehr man auch die frisch exportierte JSON-Datei bearbeitet – das Layout bleibt mittig gesetz. und das liegt am Renderer, durch das jedes Template noch einmal durch muß.

Der Renderer besteht aus mehreren HTML-Templates. Uns interessiert an dieser Stelle die Datei Template.html. Zu finden ist diese an folgender Stelle:

wp-content > plugins > mailpoet > lib > Newsletter > Renderer > Template.html

Hier müss man nun einfach align=“center“ in align=“left“ umändern. Ich habe das an allen drei Stellen geändert, an denen dies vorkommt – vermutlich reicht die erste Stelle in zeile 97:

Vorher:

<td align="center" class="mailpoet-wrapper" valign="top">

Nachher:

<td align="left" class="mailpoet-wrapper" valign="top">

Fertig.

Ein beliebiges Element auf der Under Construction Seite zentrieren

Ich benutze sehr häufig das WordPress-Plugin Under Construction Page. Und damit meine ich SEHR häufig! Es ist im Grunde eines der Plugins, die ich als erstes installiere, wenn ich ein neues WordPress-Projekt beginne.

Eine Sache, die viele Leute zu stören scheint, ist, dass „es nicht möglich ist, Bilder zu zentrieren, die nicht 100% breit sind“ – naja –  es ist tatsächlich möglich. Und man braucht nur 2-3-4 Zeilen CSS, je nachdem wie man zählt:

.ucp-module {
    margin: 0 auto !important;
    float:none;
}

Sie fügen diese CSS-Zeilen einfach in das Feld „Custom CSS“ unter „Page Properties“ ein und fertig! Zauberei! Oder eigentlich „nur“ die Magie von CSS. Hoffentlich hilft das dem einen oder anderen? Mahlzeit!