2010-08-22 4 views
0

J'ai besoin de personnaliser le previous_post_link() et next_post_link() sur WordPress.comment personnaliser les fonctions internes, comme adjacent_post_link wordpress()

Par exemple, je veux réduire permaliens comme « Top 5 langages de programmation que vous avez besoin d'apprendre » à « Top 5 » ... de la programmation.

La fonction responsable de la création du lien isadjacent_post_link() situé à wp-includes/link-template.php

+0

Eh bien, j'ai besoin de limiter les caractères sur les liens posts et prev post sur les pages de publication pour éviter les bugs - voir l'exemple: http://www.noamdesign.com/blog/time-doesnt-matter-part-2/ –

Répondre

0

la fonction next_post_link() et previous_post_link() les deux viennent avec des options de personnalisation. http://codex.wordpress.org/Function_Reference/next_post_link. Après avoir lu cela et appris quels sont les arguments acceptables pour la fonction, Tester pour voir s'il est possible de passer une fonction php à l'option, comme substr().

<?php next_post_link('%link',substr('%title',20),FALSE);?> 

'lien%' et '% titre' sont à shortcodes le lien de poste et le titre.

Faites-nous savoir si ça marche.

+0

Hey kevtrout! Merci de rejouer. Votre idée n'a pas fonctionné, mais a aidé à la comprendre la mienne. D'abord, la sous-chaîne n'est pas possible car le code wordpress n'exécute pas les arguments de la fonction. Mais en regardant attentivement le code, j'ai vu un crochet que j'ai utilisé. Donc, je vais répondre à cette question ci-dessous, afin que tout le monde puisse en bénéficier. –

2

Pour créer un lien personnalisée adjacent pour les messages que je peux utiliser le next_post_link crochet de filtre et previos_post_link;

Dans le functions.php:

function shrink_previous_post_link($format, $link){ 
    $in_same_cat = false; 
    $excluded_categories = ''; 
    $previous = true; 
    $link='%title'; 
    $format='&laquo; %link'; 


    if ($previous && is_attachment()) 
     $post = & get_post($GLOBALS['post']->post_parent); 
    else 
     $post = get_adjacent_post($in_same_cat, $excluded_categories, $previous); 

    if (!$post) 
     return; 

    $title = $post->post_title; 

    if (empty($post->post_title)) 
     $title = $previous ? __('Previous Post') : __('Next Post'); 

    $rel = $previous ? 'prev' : 'next'; 

    //Save the original title 
    $original_title = $title; 

    //create short title, if needed 
    if (strlen($title)>40){ 
     $first_part = substr($title, 0, 23); 
     $last_part = substr($title, -17); 
     $title = $first_part."...".$last_part; 
    } 

    $string = '<a href="'.get_permalink($post).'" rel="'.$rel.'" title="'.$original_title.'">'; 
    $link = str_replace('%title', $title, $link); 
    $link = $string . $link . '</a>'; 

    $format = str_replace('%link', $link, $format); 

    echo $format; 
} 

function shrink_next_post_link($format, $link){ 
    $in_same_cat = false; 
    $excluded_categories = ''; 
    $previous = false; 
    $link='%title'; 
    $format='%link &raquo;'; 

    if ($previous && is_attachment()) 
     $post = & get_post($GLOBALS['post']->post_parent); 
    else 
     $post = get_adjacent_post($in_same_cat, $excluded_categories, $previous); 

    if (!$post) 
     return; 

    $title = $post->post_title; 

    if (empty($post->post_title)) 
     $title = $previous ? __('Previous Post') : __('Next Post'); 

    $rel = $previous ? 'prev' : 'next'; 

    //Save the original title 
    $original_title = $title; 

    //create short title, if needed 
    if (strlen($title)>40){ 
     $first_part = substr($title, 0, 23); 
     $last_part = substr($title, -17); 
     $title = $first_part."...".$last_part; 
    } 

    $string = '<a href="'.get_permalink($post).'" rel="'.$rel.'" title="'.$original_title.'">'; 
    $link = str_replace('%title', $title, $link); 
    $link = $string . $link . '</a>'; 

    $format = str_replace('%link', $link, $format); 

    echo $format; 
} 

add_filter('next_post_link', 'shrink_next_post_link',10,2); 
add_filter('previous_post_link', 'shrink_previous_post_link',10,2); 

que tout ce que je devais faire. Merci!

Questions connexes