Trick # 542 | Dieser Beitrag beinhaltet 619 Wörter. – Geschätzte Lesezeit: ca. 4 Minuten.
WordPress-Beiträge erhalten von Haus aus oft sehr lange URL, welche auf dem Beitragstitel basieren. Doch es geht auch kürzer: Mit einem URL-Shortener. Damit Sie aber nicht von externen Diensten abhängig sind, zeigen wir Ihnen heute eine Variante, wie Sie sowas selber umsetzen können. Der Hack funktioniert – anders als ein früherer Trick – auch mit dem Gutenberg-Editor von WordPress. Ein heisser Tipp für das Teilen von Beiträgen auf den sozialen Medien.
Die Idee dieses WordPress-Tricks hatten wir Ihnen vor einigen Jahren schon einmal vorgestellt: im Beitrag «Kurzlinks: Mit diesem Snippet bauen Sie Ihren eigenen URL-Shortener». Allerdings hat die damalige Funktion mit dem Gutenberg-Editor nicht mehr funktioniert – so haben wir eine neue Variante geschrieben und diese auch gleich ein wenig verbessert.
Dafür kopieren Sie einfach den nachfolgenden PHP-Code und fügen Sie ihn der Dtai functions.php hinzu – im Backend unter Design/Theme-Datei-Editor:
// Add a meta box to display the shortlink in the post editor
add_action('add_meta_boxes', function() {
add_meta_box(
'post_shortlink',
'Shortlink',
'display_shortlink_meta_box',
'post',
'side',
'high'
);
});
function display_shortlink_meta_box($post) {
$shortlink = site_url('/' . $post->ID);
?>
<p>Klicken Sie auf das Feld unten, um den Kurzlink zu kopieren:</p>
<input
type="text"
value="<?php echo esc_url($shortlink); ?>"
readonly
style="width: 100%; cursor: pointer;"
onclick="copyToClipboard(this)"
>
<p id="copy-message" style="color: green; display: none;">Shortlink kopiert!</p>
<script>
function copyToClipboard(input) {
input.select();
input.setSelectionRange(0, 99999); // For mobile devices
navigator.clipboard.writeText(input.value).then(function() {
const message = document.getElementById('copy-message');
message.style.display = 'block';
setTimeout(() => { message.style.display = 'none'; }, 2000);
});
}
</script>
<?php
}
// Add a rewrite rule to handle URLs with only the Post ID
add_action('init', function() {
add_rewrite_rule(
'^([0-9]+)/?$',
'index.php?p=$matches[1]',
'top'
);
});
// Flush rewrite rules on plugin activation
register_activation_hook(__FILE__, function() {
flush_rewrite_rules();
});
// Flush rewrite rules on plugin deactivation
register_deactivation_hook(__FILE__, function() {
flush_rewrite_rules();
});
// Redirect visitors from the shortlink to the actual post
add_action('template_redirect', function() {
$requested_url = trim($_SERVER['REQUEST_URI'], '/');
// Check if the URL is numeric (Post ID)
if (is_numeric($requested_url)) {
$post_id = intval($requested_url);
$post = get_post($post_id);
if ($post) {
wp_redirect(get_permalink($post_id), 301);
exit;
} else {
wp_die('Post not found', '404', ['response' => 404]);
}
}
});
Wenn Sie einen neuen Beitrag erstellen (oder einen bestehenden bearbeiten) haben Sie nun eine neue Metabox für Kurzlinks bereit. Generiert werden eindeutige Links, welche auf der Beitrags-ID von WordPressberuhen – funktionieren also wie einst. Die Kurzlinks aus unserem alten Code wurden dabei auch gleich verbessert. Sie sehen nun nicht mehr so aus: https://dr-code.ch/?p=2514, sondern werden weiter vereinfacht: https://dr-code.ch/2514,.
Werbung


