Flynn |
Dec 14, 2008 12:56 PM |
Catchable, no commas, missing/corrupt post info - Please check this file
UPDATE: Skip this post and see the post after mine by TarheelRambler. I can finally replicate all the errors some of you were seeing, meaning that fixing it will be much easier now.
If you have any of these errors:
- "Catchable fatal error: Object of class stdClass could not be converted to string" (happens on PHP 5.2)
- No comments link in the post info
- BACKSLASHES \\\\\\\\\\\\\\\ being inserted in post info
- No commas between tags or categories in the post info
- Dates that start with a number eating up the rest of the post info
- Basically anything related to "post info", which is configured at the menu tab "Post/Page Menu Items"
Could you copy and save this file as "bfa_postinfo.php" and upload it as /atahualpa3/functions/bfa_postinfo.php and then see if any of these errors go away?
(The problem is none of these errors, except the date error, occurs on my test blogs)
If the "Catchable fatal error" proves to be consistent I might remove the option "Print 1st Category unlinked" for now and move on. That would fix the error, sort of. That option would be gone but "Print 1st Category linked" would still work.
PHP Code:
<?php function image_files($matches) { return '<img src="' . get_bloginfo('template_directory') . '/images/icons/' . $matches[1] . '" alt="" />'; }
function postinfo($postinfo_string) {
# get all the data for the current post //$post_id = $wp_query->get_queried_object_id(); $post_id = $post->ID; $post_data = get_post($post_id, ARRAY_A); $post_title = $post_data['post_title']; $post_author_id = $post_data['post_author']; $post_comment_count = $post_data['comment_count']; $post_comment_status = $post_data['comment_status']; // This may not work for imported posts: // $post_permalink = $post_data['guid']; $post_permalink = get_permalink($post_id); $post_date = $post_data['post_date']; #$post_date = date("Y m d",strtotime($post->post_date))
if (strpos($postinfo_string,'%tags')!==false) { ######## TAGS ######## $tag_options = preg_match("/(.*)%tags\('(.*?)'(.*?)'(.*?)'(.*?)'(.*?)'(.*)/i",$postinfo_string,$tag_matches); $tag_link_options = preg_match("/(.*)%tags-linked\('(.*?)'(.*?)'(.*?)'(.*?)'(.*?)'(.*)/i",$postinfo_string,$tag_link_matches); // tags-linked if (get_the_tag_list()) {$tags_linked = get_the_tag_list($tag_link_matches[2], $tag_link_matches[4], $tag_link_matches[6]);} else { $tags_linked = ""; } // tags $posttags = get_the_tags(); if ($posttags) { foreach($posttags as $tag) { $tag_list .= $tag->name . $tag_matches[4]; } // remove last separator $tag_list = preg_replace("/".$tag_matches[4]."$/mi", "", $tag_list); $tags = $tag_matches[2] . $tag_list . $tag_matches[6]; } else { $tags = ""; } }
if (strpos($postinfo_string,'%author')!==false) { ######### AUTHOR ######## $author_name = get_author_name($post_author_id); $author_url = get_author_posts_url($post_author_id, $author_name); // author-linked $author_linked = '<a href="' . $author_url . '">' . $author_name . '</a>'; // author $author = $author_name; }
if (strpos($postinfo_string,'%date(')!==false) { ######## DATE ######## $date_param = preg_match("/(.*)\%date\('(.*?)'\)(.*)/i",$postinfo_string,$date_matches); # This works, but not with localization: #$date = date("$date_matches[2]",strtotime($post_date)); #$date = mysql2date($date_matches[2], date('Y-m-d H:i:s',strtotime($post_date))); #$date = mysql2date($date_matches[2], $post_date); $date = mysql2date($date_matches[2], get_the_time('Y-m-d H:i:s')); }
if (strpos($postinfo_string,'%category')!==false) { ######## CATEGORY ######## // category $all_categories = get_the_category(); $category = $all_categories[0]->cat_name; $category_notlinked = $category; // category-linked $category_linked = '<a href="' . get_category_link($all_categories[0]->cat_ID) . '">' . $category . '</a>'; }
if (strpos($postinfo_string,'%categories')!==false) { ######## CATEGORIES ######## $category_separator = preg_match("/(.*)%categories\('(.*?)'\)(.*)/i",$postinfo_string,$category_matches); $category_linked_separator = preg_match("/(.*)%categories-linked\('(.*?)'\)(.*)/i",$postinfo_string,$category_linked_matches); $categories = ""; $categories_linked = ""; foreach((get_the_category()) as $category) { // categories $categories .= $category->cat_name . $category_matches[2]; // categories-linked $categories_linked .= '<a href="' . get_category_link($category->cat_ID) . '">' . $category->cat_name . '</a>' . $category_linked_matches[2]; } // remove last separator $categories = preg_replace("/".$category_matches[2]."$/mi", "", $categories); $categories_linked = preg_replace("/".$category_linked_matches[2]."$/mi", "", $categories_linked); }
if (strpos($postinfo_string,'%comments(')!==false) { ######## COMMENTS ######## $comment_options = preg_match("/(.*)%comments\('(.*?)'(.*?)'(.*?)'(.*?)'(.*?)'(.*?)'(.*?)'(.*)/i",$postinfo_string,$comment_matches);
if ($post_comment_count == 0) { $comment_link_anchor = $comment_matches[2]; } elseif ($post_comment_count == 1) { $comment_link_anchor = $comment_matches[4]; } elseif ($post_comment_count > 1) { $comment_link_anchor = str_replace("%", $post_comment_count, $comment_matches[6]); } elseif ($post_comment_status == "closed") { $comment_link_anchor = $comment_matches[8]; }
if ($post_comment_status == "closed") { $comment_link = $comment_matches[8]; } else { $comment_link = '<a href="' . get_permalink() . '#comments">' . $comment_link_anchor . '</a>'; } }
if (strpos($postinfo_string,'%comments-rss')!==false) { ######## COMMENTS RSS ##### $comments_rss_url = comments_rss(); $comments_rss_link_text = preg_match("/(.*)%comments-rss\('(.*?)'(.*)/i",$postinfo_string,$comments_rss_matches); $comments_rss_link = '<a href="' . $comments_rss_url .'"'; global $options; if (get_option('ata_nofollow') == "Yes") { $comments_rss_link .= ' rel="nofollow"'; } $comments_rss_link .= '>' . $comments_rss_matches[2] . '</a>'; }
if (strpos($postinfo_string,'%trackback(')!==false) { ######## TRACKBACK ######## $trackback_url = trackback_url(false); $trackback_link_text = preg_match("/(.*)%trackback\('(.*?)'(.*)/i",$postinfo_string,$trackback_matches); $trackback_link = '<a href="' . $trackback_url . '">' . $trackback_matches[2] . '</a>'; }
if (strpos($postinfo_string,'%edit(')!==false) { ######## EDIT ######## $edit_options = preg_match("/(.*)%edit\('(.*?)'(.*?)'(.*?)'(.*?)'(.*?)'(.*)/i",$postinfo_string,$edit_matches); $edit_link = get_edit_post_link( $post->ID ); if ( !current_user_can( 'edit_page', $post->ID )) { $edit = ""; } else { $edit = $edit_matches[2] . '<a href="' . $edit_link . '">' . $edit_matches[4] . '</a>' . $edit_matches[6]; } }
if (strpos($postinfo_string,'%print(')!==false) { ######## PRINT ######## $print_text = preg_match("/(.*)%print\('(.*?)'(.*)/i",$postinfo_string,$print_text_matches); $print_link = '<a href="javascript:window.print()">' .$print_text_matches[2]. '</a>'; }
if (strpos($postinfo_string,'%wp-email')!==false) { ######## EMAIL ######## $wp_email = ( function_exists('wp_email') ? email_link($email_post_text = '', $email_page_text = '', $echo = false) : "" ); }
if (strpos($postinfo_string,'%wp-print')!==false) { ######## WP-PRINT ######## $wp_print = ( function_exists('wp_print') ? print_link($print_post_text = '', $print_page_text = '', $echo = false) : "" ); }
if (strpos($postinfo_string,'%wp-postviews')!==false) { ######## WP-POSTVIEWS ######## $wp_postviews = ( function_exists('the_views') ? the_views($display = false) : "" ); }
if (strpos($postinfo_string,'%sociable')!==false) { ######## SOCIABLE ######## $sociable = ( (function_exists('sociable_html2') AND function_exists('sociable_html'))? $sociable = sociable_html2() : "" ); }
$postinfo = $postinfo_string; $postinfo = preg_replace("/(.*)%tags\((.*?)\)%(.*)/i", "\${1}" .$tags. "\${3}", $postinfo); $postinfo = preg_replace("/(.*)%tags-linked\((.*?)\)%(.*)/i", "\${1}" .$tags_linked. "\${3}", $postinfo); $postinfo = str_replace("%author%", $author, $postinfo); $postinfo = str_replace("%author-linked%", $author_linked, $postinfo); $postinfo = preg_replace("/(.*)%date\((.*?)\)%(.*)/i", "\${1}" .$date. "\${3}", $postinfo); $postinfo = str_replace("%category%", $category_notlinked, $postinfo); $postinfo = str_replace("%category-linked%", $category_linked, $postinfo); $postinfo = preg_replace("/(.*)%categories\((.*?)\)%(.*)/i", "\${1}" .$categories. "\${3}", $postinfo); $postinfo = preg_replace("/(.*)%categories-linked\((.*?)\)%(.*)/i", "\${1}" .$categories_linked. "\${3}", $postinfo); $postinfo = preg_replace("/(.*)%comments\((.*?)\)%(.*)/i", "\${1}" .$comment_link. "\${3}", $postinfo); $postinfo = preg_replace("/(.*)%comments-rss\((.*?)\)%(.*)/i", "\${1}" .$comments_rss_link. "\${3}", $postinfo); $postinfo = str_replace("%trackback%", $trackback_url, $postinfo); $postinfo = preg_replace("/(.*)%trackback-linked\((.*?)\)%(.*)/i", "\${1}" .$trackback_link. "\${3}", $postinfo); $postinfo = preg_replace("/(.*)%edit\((.*?)\)%(.*)/i", "\${1}" .$edit. "\${3}", $postinfo); $postinfo = preg_replace("/(.*)%print\((.*?)\)%(.*)/i", "\${1}" .$print_link. "\${3}", $postinfo); $postinfo = str_replace("%wp-print%", $wp_print, $postinfo); $postinfo = str_replace("%wp-email%", $wp_email, $postinfo); $postinfo = str_replace("%wp-postviews%", $wp_postviews, $postinfo); $postinfo = str_replace("%sociable%", $sociable, $postinfo);
if (strpos($postinfo_string,'<image(')!==false) { // images $postinfo = preg_replace_callback("|<image\((.*?)\)>|","image_files",$postinfo); }
return $postinfo; } ?>
|