J'ai modifié une classe trouvée sur Stack Overflow pour varier la longueur de l'extrait de Wordpress. Il a été un ours (depuis que je suis nouveau à OOP) mais il fonctionne finalement et accepte un deuxième paramètre maintenant pour filtrer le lien de lire plus. Ce que je voudrais faire, c'est que la sortie est actuellement 'the_excerpt' qui est immédiatement répercutée sur la fonction "my_excerpt()". Je voudrais ajouter une fonction appelée "get_my_excerpt" qui retourne la valeur. Je sais que get_the_excerpt() fait exactement cela, mais je n'arrive pas à le faire fonctionner dans cette classe.return get_the_excerpt() d'une classe pour plusieurs extraits wordpress
/* Class that enables excerpt length parameter */
/* called via my_excerpt('length') */
class Excerpt {
// Default length (by WordPress)
public static $length = 55;
// Default more (by WordPress)
public static $more = "[...]";
// So you can call: my_excerpt('short');
public static $types = array(
'short' => 25,
'regular' => 55,
'long' => 100,
'xlong' => 200,
);
// So you can call: my_excerpt('short');
public static $more_types = array(
'none' => "",
'regular' => "[...]",
'ellipse' => "...",
'permalink' => 'skip',
);
/**
* Sets the length for the excerpt,
* then it adds the WP filter
* And automatically calls the_excerpt();
*
* @param string $new_length
* @return void
* @author Baylor Rae'
*/
public static function filter($new_length = 55, $new_more="[...]", $echo=TRUE) {
Excerpt::$length = $new_length;
Excerpt::$more = $new_more;
add_filter('excerpt_length', 'Excerpt::new_length',98);
add_filter('excerpt_more', 'Excerpt::new_more',99);
return Excerpt::output();
}
// Tells WP the new length
public static function new_length() {
if(isset(Excerpt::$types[Excerpt::$length]))
return Excerpt::$types[Excerpt::$length];
else
return Excerpt::$length;
}
// Tells WP the new more
public static function new_more() {
$db = new ReadMore;
if(isset(Excerpt::$more_types[Excerpt::$more]) AND ((Excerpt::$more_types[Excerpt::$more]) != "skip"))
return Excerpt::$more_types[Excerpt::$more];
elseif(isset(Excerpt::$more_types[Excerpt::$more]) AND ((Excerpt::$more_types[Excerpt::$more]) == "skip"))
return $db->readmore();
else
return Excerpt::$more;
}
// Echoes out the excerpt
public static function output() {
return get_the_excerpt();
}
}
// An alias to the class
function get_my_excerpt($length = 55, $more="[...]") {
return Excerpt::filter($length, $more);
}
// An alias to the class
function my_excerpt($length = 55, $more="[...]") {
echo get_my_excerpt($length, $more);
}
class ReadMore {
private $title;
private $permalink;
private $more;
public function __construct() {
//$this->title = get_the_title();
//$this->permalink = get_permalink();
$temp = "..." . '<a class="readmore" title="'. _('Permalink to').get_the_title() . '" href=" ' . get_permalink() . '">'._('Read the rest').'</a>';
$this->more = $temp;
}
public function readmore() {
return $this->more;
}
}
OUI! fait ce que vous avez dit, plus le retour sur la sortie statique() et maintenant cela fonctionne. J'ai corrigé mon code dans le message d'origine pour refléter vos modifications. Je vous remercie! – helgatheviking