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($num_posts = 1,$show_excerpt = false,$text_format="Coming up [date]")
{
$posts=get_posts("numberposts=".$num_posts."&order=ASC&post_status=future"); //getpost
echo "<ul class=\"upcoming-posts\">";
global $post;
$old_post = $post;
foreach ($posts as $post)
{
setup_postdata($post); //setup_postdata
$my_date = the_date('','','', FALSE); //the_date
$coming_up_text = str_replace("[date]",$my_date,$text_format);
}
}
?>
<?php echo $coming_up_text; ?>
<?php echo the_title(); ?> <!-- the_title -->
<?php if($show_excerpt) : ?>
<?php the_excerpt_rss(); ?> <!-- the_excerpt_rss -->
<?php endif ?>
<?php
$post=$old_post;
setup_postdata($post);
echo "";
function widget_coming_next($args)
{
extract($args,EXTR_SKIP);
echo $before_widget;
list_upcoming_posts();
echo $after_widget;
}
//hozzáadjuk a widgetekhez, az admin panelon
function widget_coming_next_init()
{
wp_register_sidebar_widget(COMING_NEXT_WIDGET_ID,__('Coming Next'), 'widget_coming_next'); //?str
}
add_action("plugins_loaded", "widget_coming_next_init");
function widget_coming_next_control()
{
$options = get_option(COMING_NEXT_WIDGET_ID);
if (!is_array($options))
{
$options = array();
}
$widget_data = $_POST[COMING_NEXT_WIDGET_ID];
if ($widget_data['submit'])
{
$options['num_posts'] = $widget_data['num_posts'];
$options['coming_up_text'] = $widget_data['coming_up_text'];
$options['show_excerpt'] = $widget_data['show_excerpt'];
update_option(COMING_NEXT_WIDGET_ID, $options);
}
$num_posts = $options['num_posts'];
$coming_up_text = $options['coming_up_text'];
$show_excerpt = $options['show_excerpt'];
}
?>[code=php:34meahwi]
<?php
define(COMING_NEXT_WIDGET_ID,"widget_coming_next");
function list_upcoming_posts($num_posts = 1,$show_excerpt = false,$text_format="Coming up [date]")
{
$posts=get_posts("numberposts=".$num_posts."&order=ASC&post_status=future"); //getpost
echo "<ul class=\"upcoming-posts\">";
global $post;
$old_post = $post;
foreach ($posts as $post)
{
setup_postdata($post); //setup_postdata
$my_date = the_date('','','', FALSE); //the_date
$coming_up_text = str_replace("[date]",$my_date,$text_format);
}
}
?>
<?php echo $coming_up_text; ?>
<?php echo the_title(); ?> <!-- the_title -->
<?php if($show_excerpt) : ?>
<?php the_excerpt_rss(); ?> <!-- the_excerpt_rss -->
<?php endif ?>
<?php
$post=$old_post;
setup_postdata($post);
echo "";
function widget_coming_next($args)
{
extract($args,EXTR_SKIP);
echo $before_widget;
list_upcoming_posts();
echo $after_widget;
}
//hozzáadjuk a widgetekhez, az admin panelon
function widget_coming_next_init()
{
wp_register_sidebar_widget(COMING_NEXT_WIDGET_ID,__('Coming Next'), 'widget_coming_next'); //?str
}
add_action("plugins_loaded", "widget_coming_next_init");
function widget_coming_next_control()
{
$options = get_option(COMING_NEXT_WIDGET_ID);
if (!is_array($options))
{
$options = array();
}
$widget_data = $_POST[COMING_NEXT_WIDGET_ID];
if ($widget_data['submit'])
{
$options['num_posts'] = $widget_data['num_posts'];
$options['coming_up_text'] = $widget_data['coming_up_text'];
$options['show_excerpt'] = $widget_data['show_excerpt'];
update_option(COMING_NEXT_WIDGET_ID, $options);
}
$num_posts = $options['num_posts'];
$coming_up_text = $options['coming_up_text'];
$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( $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( $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
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( '
[code=php:3ci5wqv5] function cat_post( $content )
{
if ( !is_singular( ‘post’ ) ) //ha nem csak egy postot nézünk akkor == cont
return $content;
//aktuális post kategóriája
$terms = get_the_terms( get_the_ID(), ‘category’ );
$categories = array();
foreach ( $terms as $term )
$categories[] = $term->term_id;
//ugyan olyan postok lekerese a db-bol
$loop = new WP_Query(
array(
'category__in’ => $categories,
'posts_per_page’ => 7,
'post__not_in’ => array( get_the_ID() ),
'orderby’ => ‘rand’
)
);
//ha van post…
if ( $loop->have_posts() )
{
$content .= ‘’; //lista
while ( $loop->have_posts() )
{
$loop->the_post();
$content .= get_the_excerpt();
}
$content .= ‘’; //lista lezaras
wp_reset_query();
}
return $content;
} [code=php:3ci5wqv5]the_title( '
function cat_post( $content )
{
if ( !is_singular( ‘post’ ) ) //ha nem csak egy postot nézünk akkor == cont
return $content;
//aktuális post kategóriája
$terms = get_the_terms( get_the_ID(), ‘category’ );
$categories = array();
foreach ( $terms as $term )
$categories[] = $term->term_id;
//ugyan olyan postok lekerese a db-bol
$loop = new WP_Query(
array(
'category__in’ => $categories,
'posts_per_page’ => 7,
'post__not_in’ => array( get_the_ID() ),
'orderby’ => ‘rand’
)
);
//ha van post…
if ( $loop->have_posts() )
{
$content .= ‘’; //lista
while ( $loop->have_posts() )
{
$loop->the_post();
$content .= get_the_excerpt();
}
$content .= ‘’; //lista lezaras
wp_reset_query();
}
return $content;
} [code=php:3ci5wqv5] function cat_post( $content )
{
if ( !is_singular( ‘post’ ) ) //ha nem csak egy postot nézünk akkor == cont
return $content;
//aktuális post kategóriája
$terms = get_the_terms( get_the_ID(), ‘category’ );
$categories = array();
foreach ( $terms as $term )
$categories[] = $term->term_id;
//ugyan olyan postok lekerese a db-bol
$loop = new WP_Query(
array(
'category__in’ => $categories,
'posts_per_page’ => 7,
'post__not_in’ => array( get_the_ID() ),
'orderby’ => ‘rand’
)
);
//ha van post…
if ( $loop->have_posts() )
{
$content .= ‘’; //lista
while ( $loop->have_posts() )
{
$loop->the_post();
$content .= get_the_excerpt();
}
$content .= ‘’; //lista lezaras
wp_reset_query();
}
return $content;
}