it-swarm.com.de

Wie kann ich Titelattribute zu den nächsten und vorherigen Post-Link-Funktionen hinzufügen?

Aus irgendeinem Grund wird ein title-Attribut nicht an next_post_link- und prev_post_link-Aufrufe in WordPress angehängt. Wie kann ich einen hinzufügen?

6
Infocentre

Aktualisieren

Da ich das Repo auf GitHub gelöscht habe, ist hier eine neue Antwort.

add_filter( 'previous_post_link', 'wpse13044_adjacent_post_link_tooltip', 10, 2 );
add_filter( 'next_post_link', 'wpse13044_adjacent_post_link_tooltip', 10, 2 );
function wpse13044_adjacent_post_link_tooltip( $format, $link )
{
    $previous = 'previous_post_link' === current_filter();
    // Get the next/previous post object
    $post = get_adjacent_post(
         false
        ,''
        ,$previous
    );
    // Copypasta from cores `get_adjacent_post_link()` fn
    '' === $title = get_the_title( $post->ID );
        AND $title = $previous 
            ? sprint( __( 'Previous Post: %s', 'your_textdomain' ), $title )
            : sprint( __( 'Next Post: %s', 'your_textdomain' ), $title );

    $format = str_replace(
         'rel="'
        ,sprintf(
             'title="%s" rel="'
            ,$title
         )
        ,$format
    );

    return "<span class='some classes'>{$format}</span>";
}
6
kaiser

Es sind keine Funktionen und Filter erforderlich. Sie müssen lediglich get_adjacent_post anstelle von next_post_link und prev_post_link verwenden. Beachten Sie, dass get_adjacent_post zum Abrufen des vorherigen und des nächsten Beitrags verwendet wird. Lesen Sie dazu hier , um den vorherigen Beitrag und dessen Titel abzurufen Attribut Verwenden Sie diese

$prev_post = get_adjacent_post(false, '', true);
if(!empty($prev_post)) {
echo '<a href="' . get_permalink($prev_post->ID) . '" title="' . $prev_post->post_title . '">' . $prev_post->post_title . '</a>'; }

Verwenden Sie diese Option, um den nächsten Beitrag und sein Titelattribut abzurufen

$next_post = get_adjacent_post(false, '', false);
if(!empty($next_post)) {
echo '<a href="' . get_permalink($next_post->ID) . '" title="' . $next_post->post_title . '">' . $next_post->post_title . '</a>'; }
6
Rahman Sharif

Ich versuche das jetzt auch. Die Filterfunktion scheint die beste Wahl zu sein.

Hier bin ich gerade, aber ich kann den Titel des nächsten oder vorherigen Beitrags scheinbar nicht abrufen und an den Filter weitergeben.

Edit: Habs rausgefunden. Ein bisschen hackey wahrscheinlich, aber es funktioniert.

add_filter('next_post_link','add_title_to_next_post_link');
function add_title_to_next_post_link($link) {
global $post;
$post = get_post($post_id);
$next_post = get_next_post();
$title = $next_post->post_title;
$link = str_replace("rel=", " title='".$title."' rel", $link);
return $link;
}

add_filter('previous_post_link','add_title_to_previous_post_link');
function add_title_to_previous_post_link($link) {
global $post;
$post = get_post($post_id);
$previous_post = get_previous_post();
$title = $previous_post->post_title;
$link = str_replace("rel=", " title='".$title."' rel", $link);
return $link;
}
4
Picard102

Vielleicht ein bisschen alt, und ich war mir nicht sicher, wie ich eine Antwort kommentieren sollte ...

Kurz gesagt, nachdem ich nach der gleichen Lösung gesucht hatte, habe ich den Vorschlag von Picard102 nur ein kleines bisschen geändert:

/**
 * Filter previous_post_link and next_post_link
 */
function filter_next_post_link($link) {
    global $post;
    $post = get_post($post_id);
    $next_post = get_next_post();
    $title = $next_post->post_title;
    $link = str_replace("rel=", 'title="' . $title . '" rel=', $link);
    return $link;
}
add_filter('next_post_link', 'filter_next_post_link');

function filter_previous_post_link($link) {
    global $post;
    $post = get_post($post_id);
    $previous_post = get_previous_post();
    $title = $previous_post->post_title;
    $link = str_replace("rel=", 'title="' . $title . '" rel=', $link);
    return $link;
}
add_filter('previous_post_link', 'filter_previous_post_link');
1
user5424

Verkürzte den Code ein wenig.

/*
 * Add "title=" to previous_post_link and next_post_link
 */

add_filter('next_post_link', function($link) {
  $next_post = get_next_post();
  $title = $next_post->post_title;
  $link = str_replace('href=', 'title="'.$title.'" href=', $link);
  return $link;
});

add_filter('previous_post_link', function($link) {
  $previous_post = get_previous_post();
  $title = $previous_post->post_title;
  $link = str_replace('href=', 'title="'.$title.'" href=', $link);
  return $link;
});
0
Ivan Shim