saját plugin -> fatal error

sziasztok próbálkozom egy saját plugin megírásával, de sajnos amikor bekapcsolom akkor összeomlik tőle a WP ilyen hibával:





Fatal error: Call to undefined function get_userdata() in /var/www/…/wordpress/wp-includes/query.php on line 3546











nem igazán értem mitől, mert nem piszkáltam ezt a fájlt.





itt a php plugin:











<?php


define
(COMING_NEXT_WIDGET_ID,"widget_coming_next");





function
list_upcoming_posts(&#036;num_posts = 1,$show_excerpt = false,$text_format="Coming up [date]")


{


&
#036;posts=get_posts("numberposts=".$num_posts."&order=ASC&post_status=future"); //getpost


echo "<ul class=\"upcoming-posts&#092;">";


global &#036;post;


&#036;old_post = $post;





foreach (&#036;posts as $post)


{


setup_postdata(&#036;post); //setup_postdata


&#036;my_date = the_date('','','', FALSE); //the_date


&#036;coming_up_text = str_replace("[date]",$my_date,$text_format);


}


}


?>








  • <?php echo &#036;coming_up_text; ?>


    <?php echo the_title(); ?> <!-- the_title -->


    <?php if(&#036;show_excerpt) : ?>





    <?php the_excerpt_rss(); ?> <!-- the_excerpt_rss -->





    <?php endif ?>








  • <?php


    &#036;post=$old_post;


    setup_postdata(&#036;post);


    echo "";





    function
    widget_coming_next(&#036;args)


    {


    extract(&#036;args,EXTR_SKIP);


    echo &#036;before_widget;


    list_upcoming_posts();


    echo &
    #036;after_widget;


    }


    //hozzáadjuk a widgetekhez, az admin panelon


    function widget_coming_next_init()


    {


    wp_register_sidebar_widget(COMING_NEXT_WIDGET_ID,__(&#39;Coming Next'), 'widget_coming_next'); //?str


    }





    add_action("plugins_loaded", "widget_coming_next_init");





    function
    widget_coming_next_control()


    {


    &
    #036;options = get_option(COMING_NEXT_WIDGET_ID);





    if (&#33;is_array($options))


    {


    &
    #036;options = array();


    }





    &
    #036;widget_data = $_POST[COMING_NEXT_WIDGET_ID];


    if (&#036;widget_data['submit'])


    {


    &
    #036;options['num_posts'] = $widget_data['num_posts'];


    &#036;options['coming_up_text'] = $widget_data['coming_up_text'];


    &#036;options['show_excerpt'] = $widget_data['show_excerpt'];





    update_option(COMING_NEXT_WIDGET_ID, &#036;options);


    }





    &
    #036;num_posts = $options['num_posts'];


    &#036;coming_up_text = $options['coming_up_text'];


    &#036;show_excerpt = $options['show_excerpt'];


    }


    ?>[code=php:34meahwi]





    <?php


    define
    (COMING_NEXT_WIDGET_ID,"widget_coming_next");





    function
    list_upcoming_posts(&#036;num_posts = 1,$show_excerpt = false,$text_format="Coming up [date]")


    {


    &
    #036;posts=get_posts("numberposts=".$num_posts."&order=ASC&post_status=future"); //getpost


    echo "<ul class=\"upcoming-posts&#092;">";


    global &#036;post;


    &#036;old_post = $post;





    foreach (&#036;posts as $post)


    {


    setup_postdata(&#036;post); //setup_postdata


    &#036;my_date = the_date('','','', FALSE); //the_date


    &#036;coming_up_text = str_replace("[date]",$my_date,$text_format);


    }


    }


    ?>








  • <?php echo &#036;coming_up_text; ?>


    <?php echo the_title(); ?> <!-- the_title -->


    <?php if(&#036;show_excerpt) : ?>





    <?php the_excerpt_rss(); ?> <!-- the_excerpt_rss -->





    <?php endif ?>








  • <?php


    &#036;post=$old_post;


    setup_postdata(&#036;post);


    echo "";





    function
    widget_coming_next(&#036;args)


    {


    extract(&#036;args,EXTR_SKIP);


    echo &#036;before_widget;


    list_upcoming_posts();


    echo &
    #036;after_widget;


    }


    //hozzáadjuk a widgetekhez, az admin panelon


    function widget_coming_next_init()


    {


    wp_register_sidebar_widget(COMING_NEXT_WIDGET_ID,__(&#39;Coming Next'), 'widget_coming_next'); //?str


    }





    add_action("plugins_loaded", "widget_coming_next_init");





    function
    widget_coming_next_control()


    {


    &
    #036;options = get_option(COMING_NEXT_WIDGET_ID);





    if (&#33;is_array($options))


    {


    &
    #036;options = array();


    }





    &
    #036;widget_data = $_POST[COMING_NEXT_WIDGET_ID];


    if (&#036;widget_data['submit'])


    {


    &
    #036;options['num_posts'] = $widget_data['num_posts'];


    &#036;options['coming_up_text'] = $widget_data['coming_up_text'];


    &#036;options['show_excerpt'] = $widget_data['show_excerpt'];





    update_option(COMING_NEXT_WIDGET_ID, &#036;options);


    }





    &
    #036;num_posts = $options['num_posts'];


    &#036;coming_up_text = $options['coming_up_text'];


    &#036;show_excerpt = $options['show_excerpt'];


    }


    ?>

    Ennek a fájlnak még php plugin headerje sincs, ami minden bővítményhez kell,





    így nem hiszem, hogy pluginként egyáltalán be tudod kapcsolni.











    Másrészt, nem látok benne semmi olyan megoldást(add_action, add_filter), ami bekötné a bővítményt a WordPress folyamatokba.











    Harmadrészt, az új Widget API óta, nem egészen így írunk Widgetet.





    Erről az utóbbiról találsz részletes leírást, itt:





    http://codex.wordpress.org/Widgets_API

    a headert direkt nem másoltam be!

    Az add_action és add_filter dolgokat is direkt hagytad ki?

    azt nem, egy tutor alapján csinátam/csinálom, de nem akar menni…

















    na de neki álltam egy egyszerűbbnek, az codex alapján és onnan írtam egy ilyet, de ez sem megy, bekapcsolódik, de ezt kiírja mellé:











    A bővítmény 3 karaktert generált az aktiválás váratlan eredményeként. Ha észlelünk “headers already sent” üzeneteket, vagy RSS problémákat, vagy bármilyen hibát kapcsoljuk vagy töröljük a bővítményt.












    itt a kódom:





    <?php function email_friend( &#036;post_ID ) { $friend="pavelkogabor@gmail.com"; wp_mail($friend,“blog update”,“raktem egy postot csekkold”); return $post_ID; } add_action(‘publis_post’,‘email_friend’); ?>

    (a hedader megint direkt nincs ott) bár itt gondoltam arra, hogy a php.ini-ben rosszul van beállítva a smtp port szám, de smtp_port = 25, meg SMTP = localhost jónak tűnik nekem. bár most cégnél vok lehet ez probléma, de amúgy simán tudok innen bárhova email-ezni, szal gondolom nincs tiltva[code=php:252pwyot]<?php function email_friend( &#036;post_ID ) { $friend="pavelkogabor@gmail.com"; wp_mail($friend,“blog update”,“raktem egy postot csekkold”); return $post_ID; } add_action(‘publis_post’,‘email_friend’); ?>











    (a hedader megint direkt nincs ott) bár itt gondoltam arra, hogy a php.ini-ben rosszul van beállítva a smtp port szám, de smtp_port = 25, meg SMTP = localhost jónak tűnik nekem. bár most cégnél vok lehet ez probléma, de amúgy simán tudok innen bárhova email-ezni, szal gondolom nincs tiltva

    visszatárve az eredeti problémához…azt értem,h kellene add_action és elég gáz, hogy nem vettem észre(de csak tegnap kezdtem el tanulgatni ezt a wp írást…) de ha annak a hiánya lenne a probléma, akkor gondolom más hibaüzit írna ki, nem? mert ez, hogy nem definiált funct, a query.php-ben ráadásul get_userdata?

    Szerintem, valamit nagyon elnézel :smiley:





    Vagy UTF-8 BOM header van a fájlod elején.











    Windowsos gépről egyébként nem megy a wp_mail, sem a php saját mail függvénye.

    király így bom nélkül simánbekapcsolja, csak emailt nem kapok, de egyébként a kódnak jónak kéne, hogy legyen, ugye?

    Attól függ milyen gépen/környezetben használod,





    elvileg a wp_mail paraméterezése megegyezik a php mail függvényével.











    Természetesen lehetséges, hogy a szolgáltató tiltja a php mail függvény használatát,





    és csak authentikákt smtp-vel enged levelezni.

    sziasztok újabb problémám adódott, most már talán ott tartok,h értelmes a probléma is





    szeretnék egy olyan wp plugint írni, ami kigyújti egy adott kategóriába tartozó legfrissebb egy vagy két postot és ezekből megjeleníti az elejét, eddig az van, meg hogy kategóriánként ki listázza a postokat, most azt szeretném bele rakni, hogy kivonatot is rakjon bele, de ez nem akar menni sem a get_the_excerpt-tel, sem a the_excerpttel és ezt a hibát kapom: Maximum function nesting level of ‘100’ reached, aborting! in /var/…/wp-includes/cache.php on line 352











    header meg az add filter direkt nincs bemásolva





    a loopban eddig, de erre most nem lenne szükségem egyenlőre elég lenne csak a kivonat:





    the_title( &#39;

  • ’,’
  • ’, false );

    [code=php:3ci5wqv5] function cat_post( &#036;content )


    {


    if ( &
    #33;is_singular( ‘post’ ) ) //ha nem csak egy postot nézünk akkor == cont


    return &#036;content;





    //aktuális post kategóriája


    &#036;terms = get_the_terms( get_the_ID(), ‘category’ );





    &#036;categories = array();


    foreach ( &#036;terms as $term )


    &#036;categories[] = $term->term_id;


    //ugyan olyan postok lekerese a db-bol


    &#036;loop = new WP_Query(


    array(


    &
    #39;category__in’ => $categories,


    &#39;posts_per_page’ => 7,


    &#39;post__not_in’ => array( get_the_ID() ),


    &#39;orderby’ => ‘rand’


    )


    );


    //ha van post…


    if ( &#036;loop->have_posts() )


    {


    &
    #036;content .= ‘

      ’; //lista


    while ( &#036;loop->have_posts() )


    {


    &
    #036;loop->the_post();


    &#036;content .= get_the_excerpt();


    }


    &
    #036;content .= ‘’; //lista lezaras


    wp_reset_query();


    }





    return &
    #036;content;


    } [code=php:3ci5wqv5]the_title( &#39;
  • ’,’
  • ’, false );












    function cat_post( &#036;content )


    {


    if ( &
    #33;is_singular( ‘post’ ) ) //ha nem csak egy postot nézünk akkor == cont


    return &#036;content;





    //aktuális post kategóriája


    &#036;terms = get_the_terms( get_the_ID(), ‘category’ );





    &#036;categories = array();


    foreach ( &#036;terms as $term )


    &#036;categories[] = $term->term_id;


    //ugyan olyan postok lekerese a db-bol


    &#036;loop = new WP_Query(


    array(


    &
    #39;category__in’ => $categories,


    &#39;posts_per_page’ => 7,


    &#39;post__not_in’ => array( get_the_ID() ),


    &#39;orderby’ => ‘rand’


    )


    );


    //ha van post…


    if ( &#036;loop->have_posts() )


    {


    &
    #036;content .= ‘
      ’; //lista


    while ( &#036;loop->have_posts() )


    {


    &
    #036;loop->the_post();


    &#036;content .= get_the_excerpt();


    }


    &
    #036;content .= ‘’; //lista lezaras


    wp_reset_query();


    }





    return &
    #036;content;


    } [code=php:3ci5wqv5] function cat_post( &#036;content )


    {


    if ( &
    #33;is_singular( ‘post’ ) ) //ha nem csak egy postot nézünk akkor == cont


    return &#036;content;





    //aktuális post kategóriája


    &#036;terms = get_the_terms( get_the_ID(), ‘category’ );





    &#036;categories = array();


    foreach ( &#036;terms as $term )


    &#036;categories[] = $term->term_id;


    //ugyan olyan postok lekerese a db-bol


    &#036;loop = new WP_Query(


    array(


    &
    #39;category__in’ => $categories,


    &#39;posts_per_page’ => 7,


    &#39;post__not_in’ => array( get_the_ID() ),


    &#39;orderby’ => ‘rand’


    )


    );


    //ha van post…


    if ( &#036;loop->have_posts() )


    {


    &
    #036;content .= ‘
      ’; //lista


    while ( &#036;loop->have_posts() )


    {


    &
    #036;loop->the_post();


    &#036;content .= get_the_excerpt();


    }


    &
    #036;content .= ‘’; //lista lezaras


    wp_reset_query();


    }





    return &
    #036;content;


    }