Birden fazla wordpress alıntılar için bir sınıf) (get_the_excerpt return

0 Cevap php

Ben Wordpress 'alıntıdır uzunluğu değişen için Yığın taşması buldum bir sınıfı değiştirmek oldum. Bir ayı olmuştur (I OOP yeni duyuyorum çünkü) ama sonunda iş yapar ve okuma bağlantıya daha filtrelemek için şimdi bir 2 parametre kabul. I olsa yapmak istiyorum ne, çıkış fonksiyonu "my_excerpt ()" denir whereever hemen echos 'the_excerpt' olduğunu şu anda. Ben değerini verir "get_my_excerpt" adında bir işlev eklemek istiyorum. I) demek tam olarak bu (get_the_excerpt biliyorum, ama ben bu sınıfta çalışması için görünmüyor olabilir.

  /* 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;
  }
}

0 Cevap