Suport » Probleme și soluții » WP_Widget not found for WordPress 3.4.1

  • RezolvatModerator Vlad Ilie

    (@vladwtz)


    Salutari!

    Acum cateva zile am realizat un plugin, (este vorba despre Horoscop) si dupa mici modificari aduse ultimei versiuni, 1.0.1, am navigat prin FTP si mi-am dat seama ca in folderul pluginului se crea fisierul error_log in care aparea Fatal error: Class ‘WP_Widget’ not found in […].
    M-am informat in legatura cu aceasta clasa si am inteles ca a fost introdusa inca de la versiunea de WordPress 2.8. Atunci care este problema pentru 3.4.1?

    Codul sursa este urmatorul:

    class Horoscop extends WP_Widget
    {
    function Horoscop()
    {
    parent::__construct( 'Horoscop',	__( 'Horoscop' ),
    array(
    'description' => __( 'Afişează în sidebar cele 12 zodii şi le deschide la click într-un pop-up.' )));
    }
    function widget( $args, $instance )
    {
    echo $args['before_widget'];
    echo $args['before_title'].esc_html( $instance['title'] ).$args['after_title'];
    echo "<script language=\"javascript\" type=\"text/javascript\">
    function pop_up(url)
    {
    newwindow=window.open(url,'".$instance['title']."','height=230,width=500');
    if(window.focus)
    {
    newwindow.focus()
    }
    return false;
    }</script>";
    $afisare = "<ul>\n";
    global $zodii;
    foreach ( $zodii AS $zodie )
    {
    $afisare .= "<li><a href=\"horoscop/$zodie\" title=\"$zodie\" onclick=\"return pop_up('horoscop/$zodie')\">".ucfirst( $zodie )."</a></li>\n";
    }
    $afisare .= "</ul>\n";
    echo $afisare;
    echo $args['after_widget'];
    }
    function update( $new_instance, $old_instance )
    {
    $instance['title'] = strip_tags( $new_instance['title'] );
    return $instance;
    }
    function form( $instance )
    {
    if ( $instance )
    {
    $titlu = esc_attr( $instance['title'] );
    }else{
    $titlu = __( 'Horoscop' );
    }
    echo "<p><label for=\"".$this->get_field_id( 'title' )."\">"._e( 'Titlu:' )."</label>
    <input class=\"widefat\" id=\"".$this->get_field_id( 'title' )."\" name=\"".$this->get_field_name( 'title' )."\" type=\"text\" value=\"$titlu\"/></p>";
    }
    }

Vizualizare 1 răspuns (din 1 în total)
  • Moderator Vlad Ilie

    (@vladwtz)

    Am găsit în cele din urmă problema. Pluginul meu afişează nişte informaţii după care, în codul sursă, începe declararea clasei Horoscop în cazul meu.
    Afişarea informaţiilor se face din acelaşi fişier din care se înregistrează widgetul şi se activează pluginul.

    Probabil voi mai crea o funcţie, eventual un alt fişier, care să facă lucrurile pe care le face în momentul în care pop-up-ul este deschis şi fişierul care înregistrează pluginul, accesat.

Vizualizare 1 răspuns (din 1 în total)
  • Subiectul „WP_Widget not found for WordPress 3.4.1” este închis pentru răspunsuri noi.