/* Plugin Name: Dagon Design Sitemap Generator Plugin URI: http://www.dagondesign.com/articles/sitemap-generator-plugin-for-wordpress/ Description: Generates a fully customizable sitemap Author: Dagon Design Version: 3.17 Author URI: http://www.dagondesign.com
*/
$ddsg_ver = ‘3.17’;
/* * Set up options if they do not exist */ add_option(‘ddsg_language’, ‘English’); add_option(‘ddsg_items_per_page’, 50); add_option(‘ddsg_sm_name’, ”); add_option(‘ddsg_what_to_show’, ‘both’); add_option(‘ddsg_which_first’, ‘posts’); add_option(‘ddsg_post_sort_order’, ‘title’); add_option(‘ddsg_page_sort_order’, ‘title’); add_option(‘ddsg_comments_on_posts’, FALSE); add_option(‘ddsg_comments_on_pages’, FALSE); add_option(‘ddsg_show_zero_comments’, FALSE); add_option(‘ddsg_hide_future’, FALSE); add_option(‘ddsg_new_window’, FALSE); add_option(‘ddsg_show_post_date’, FALSE); add_option(‘ddsg_show_page_date’, FALSE); add_option(‘ddsg_date_format’, ‘F jS, Y’); add_option(‘ddsg_hide_protected’, TRUE); add_option(‘ddsg_excluded_cats’, ”); add_option(‘ddsg_excluded_pages’, ”); add_option(‘ddsg_page_nav’, ‘1’); add_option(‘ddsg_page_nav_where’, ‘top’); add_option(‘ddsg_xml_path’, ”);
add_option(‘ddsg_xml_where’, ‘last’);
/* * Load language file */ $ddsg_lang_file = trim(get_option(ddsg_language)); if ($ddsg_lang_file == ”) { $ddsg_lang_file = ‘english’; }
include ABSPATH . ‘wp-content/plugins/sitemap-generator/lang/’ . $ddsg_lang_file . ‘.php’;
/* * Add options page */ function ddsg_add_option_pages() { if (function_exists(‘add_options_page’)) { add_options_page(‘Dagon Design Sitemap Generator’, ‘DDSitemapGen’, 8, __FILE__, ‘ddsg_options_page’); }
}
/* * Generate options page */
function ddsg_options_page() {
global $ddsg_ver;
if (isset($_POST[‘set_defaults’])) {
echo ‘
‘;
update_option (‘ddsg_language’, ‘English’); update_option (‘ddsg_items_per_page’, 50); update_option (‘ddsg_sm_name’, ”); update_option (‘ddsg_what_to_show’, ‘both’); update_option (‘ddsg_which_first’, ‘posts’); update_option (‘ddsg_post_sort_order’, ‘title’); update_option (‘ddsg_page_sort_order’, ‘title’); update_option (‘ddsg_comments_on_posts’, FALSE); update_option (‘ddsg_comments_on_pages’, FALSE); update_option (‘ddsg_show_zero_comments’, FALSE); update_option (‘ddsg_hide_future’, FALSE); update_option (‘ddsg_new_window’, FALSE); update_option (‘ddsg_show_post_date’, FALSE); update_option (‘ddsg_show_page_date’, FALSE); update_option (‘ddsg_date_format’, ‘F jS, Y’); update_option (‘ddsg_hide_protected’, TRUE); update_option (‘ddsg_excluded_cats’, ”); update_option (‘ddsg_excluded_pages’, ”); update_option (‘ddsg_page_nav’, ‘1’); update_option (‘ddsg_page_nav_where’, ‘top’); update_option (‘ddsg_xml_path’, ”);
update_option (‘ddsg_xml_where’, ‘last’);
echo DDSG_DEFAULTS_LOADED;
echo ‘
‘;
} else if (isset ($_POST[‘info_update’])) {
echo ‘
‘;
update_option (‘ddsg_language’, (string) $_POST[“ddsg_language”]); update_option (‘ddsg_items_per_page’, (int) $_POST[“ddsg_items_per_page”]); update_option (‘ddsg_sm_name’, (string) $_POST[“ddsg_sm_name”]); update_option (‘ddsg_what_to_show’, (string) $_POST[“ddsg_what_to_show”]); update_option (‘ddsg_which_first’, (string) $_POST[“ddsg_which_first”]); update_option (‘ddsg_post_sort_order’, (string) $_POST[“ddsg_post_sort_order”]); update_option (‘ddsg_page_sort_order’, (string) $_POST[“ddsg_page_sort_order”]); update_option (‘ddsg_comments_on_posts’, (bool) $_POST[“ddsg_comments_on_posts”]); update_option (‘ddsg_comments_on_pages’, (bool) $_POST[“ddsg_comments_on_pages”]); update_option (‘ddsg_show_zero_comments’, (bool) $_POST[“ddsg_show_zero_comments”]); update_option (‘ddsg_hide_future’, (bool) $_POST[“ddsg_hide_future”]); update_option (‘ddsg_new_window’, (bool) $_POST[“ddsg_new_window”]); update_option (‘ddsg_show_post_date’, (bool) $_POST[“ddsg_show_post_date”]); update_option (‘ddsg_show_page_date’, (bool) $_POST[“ddsg_show_page_date”]); update_option (‘ddsg_date_format’, (string) $_POST[“ddsg_date_format”]); update_option (‘ddsg_hide_protected’, (bool) $_POST[“ddsg_hide_protected”]); update_option (‘ddsg_excluded_cats’, (string) $_POST[“ddsg_excluded_cats”]); update_option (‘ddsg_excluded_pages’, (string) $_POST[“ddsg_excluded_pages”]); update_option (‘ddsg_page_nav’, (string) $_POST[“ddsg_page_nav”]); update_option (‘ddsg_page_nav_where’, (string) $_POST[“ddsg_page_nav_where”]); update_option (‘ddsg_xml_path’, (string) $_POST[“ddsg_xml_path”]);
update_option (‘ddsg_xml_where’, (string) $_POST[“ddsg_xml_where”]);
echo DDSG_CONFIG_UPDATED;
echo ‘
‘;
} ?>
Dagon Design Sitemap Generator v
}
/* * Build list of categories */
function ddsg_get_cats($cat_data, $cats, $num_cats, $cats_with_children, $excluded_cats, $parent = 0, $level = 0) {
// echo nl2br(htmlspecialchars(print_r($cats, TRUE)));
// exit();
$k = 0;
while (isset($cats[$k]) && ($cats[$k]->category_parent != $parent) && ($k < $num_cats)) { $k++;
}
while (isset($cats[$k]) && ($cats[$k]->category_parent == $parent) && ($k < $num_cats)) {
if (in_array($cats[$k]->category_ID, $excluded_cats, FALSE) === FALSE) { $cat_data[] = array ( ‘cat_id’ => $cats[$k]->category_ID, ‘cat_name’ => $cats[$k]->cat_name, ‘level’ => $level );
}
if (count ($cats_with_children) > 0) { if (in_array ($cats[$k]->category_ID, $cats_with_children, FALSE)) { if (in_array ($cats[$k]->category_ID, $excluded_cats, FALSE) === FALSE) { $cat_data = ddsg_get_cats ($cat_data, $cats, $num_cats, $cats_with_children, $excluded_cats, $cats[$k]->category_ID, $level + 1); } }
}
$k++;
}
return $cat_data;
}
/* * Build list of pages */
function ddsg_get_pages ($page_data, $pages, $num_pages, $pages_with_children, $excluded_pages, $comments_on_pages, $show_page_date, $parent = 0, $level = 0) {
$k = 0; while (isset ($pages[$k]) && ($pages[$k]->post_parent != $parent) && ($k < $num_pages)) { $k++; }
while (isset($pages[$k]) && ($pages[$k]->post_parent == $parent) && ($k < $num_pages)) {
if (in_array($pages[$k]->ID, $excluded_pages, FALSE) === FALSE) {
$tmp_array = array (); $tmp_array[‘id’] = $pages[$k]->ID; $tmp_array[‘title’] = $pages[$k]->post_title; $tmp_array[‘level’] = $level; if ($comments_on_pages) $tmp_array[‘comments’] = $pages[$k]->comment_count; if ($show_page_date) $tmp_array[‘date’] = $pages[$k]->post_date; $page_data[] = $tmp_array;
}
if (in_array ($pages[$k]->ID, $pages_with_children, FALSE)) { if (in_array ($pages[$k]->ID, $excluded_pages, FALSE) === FALSE) { $page_data = ddsg_get_pages ($page_data, $pages, $num_pages, $pages_with_children, $excluded_pages, $comments_on_pages, $show_page_date, $pages[$k]->ID, $level + 1); }
}
$k++;
}
return $page_data;
}
/* * Find parent of page */
function ddsg_find_parent_page ($page_data, $p, $k) {
$level = $page_data[$p][‘level’];
while (($page_data[$p][‘level’] > $k) and ($p >= 0)) { $p–;
}
return ” . $page_data[$p][‘title’] . ” . «\n»;
}
/* * Generate page output */
function ddsg_display_pages ($page_data, $num_pages, $page_start, $page_end, $comments_on_pages, $new_window, $show_page_date, $date_format) {
$show_zero_comments = get_option (‘ddsg_show_zero_comments’);
if ($num_pages == 0) return “”;
if (($page_start == 0) && ($page_end == 0)) return “”;
$t_out = “”;
$t_out .= DDSG_PAGE_HEADER;
$llevel = -1;
for ($p = $page_start; $p
$level = $page_data[$p][‘level’];
if ($level > $llevel) {
$t_out .= ‘
- ‘; for ($k = $llevel + 1; $k < $level; $k++) {
- ‘ . ddsg_find_parent_page ($page_data, $p, $k) . ‘ ‘ . DDSG_CONTINUED . ‘
$t_out .= ‘
if ($level == $llevel) {
$t_out .= ‘
‘;
}
if ($level < $llevel) {
$t_out .= ‘
‘;
for ($k = $llevel; $k > $level; $k–) {
$t_out .= ‘
‘; }
}
$the_title = htmlspecialchars (trim ($page_data[$p][‘title’])); if ($the_title == ”) { $the_title = DDSG_NO_TITLE;
}
$t_out .= ‘
- $t_out .= ‘ title=”‘ . strip_tags($the_title) . ‘”‘; if ($new_window) { $t_out .= ‘ target=”_blank”‘; }
$t_out .= ‘>’ . $the_title . ‘
‘;
- ‘ . ddsg_find_parent_post ($post_data, $p, $k) . ‘ ‘ . DDSG_CONTINUED . ‘
- ‘; } } if ($level == $llevel) {
$t_out .= ‘
- ‘ . DDSG_CAT_HEADER . ‘ ‘;
$t_out .= ‘ $t_out .= ‘ title=”‘ . strip_tags($post_data[$p][‘title’]) . ‘”‘; if ($new_window) { $t_out .= ‘ target=”_blank”‘; }$t_out .= ‘>’ . $post_data[$p][‘title’] . ‘
‘;
- $t_out .= ‘ title=”‘ . $the_title . ‘”‘; if ($new_window) { $t_out .= ‘ target=”_blank”‘; }
$t_out .= ‘>’ . $the_title . ‘
‘;
if ($show_page_date) { // $t_out .= ‘ ‘ . date ($date_format, strtotime ($page_data[$p][‘date’])); $t_out .= ‘ ‘ . date_i18n ($date_format, strtotime ($page_data[$p][‘date’]));
}
if ($comments_on_pages) { if ($show_zero_comments || ($page_data[$p][‘comments’] > 0)) { $t_out .= ‘ (‘ . $page_data[$p][‘comments’] . ‘)’; }
}
$llevel = $level;
}
$t_out .= ‘ ‘ . «\n»; for ($k = $llevel; $k > 0; $k–) {
$t_out .= ‘
‘;
}
$t_out .= ‘
‘;
return $t_out;
}
/* * Build post parent */
function ddsg_find_parent_post ($post_data, $p, $k) {
$level = $post_data[$p][‘level’];
while (($post_data[$p][‘level’] > $k) and ($p >= 0)) { $p–;
}
$the_cat_link = ”; if (!is_array (get_category_link ($post_data[$p][‘id’])))
$the_cat_link = get_category_link ($post_data[$p][‘id’]);
$the_title = ”; if (!is_array ($post_data[$p][‘title’]))
$the_title = $post_data[$p][‘title’];
return DDSG_CAT_HEADER . ‘ ‘ . $the_title . ”;
}
/* * Generate post output */
function ddsg_display_posts ($post_data, $num_posts, $post_start, $post_end, $comments_on_posts, $new_window, $show_post_date, $date_format) {
$show_zero_comments = get_option (‘ddsg_show_zero_comments’);
if ($num_posts == 0) return “”;
if (($post_start == 0) && ($post_end == 0)) return “”;
$t_out = “”;
$t_out .= DDSG_POST_HEADER;
$llevel = -1;
for ($p = $post_start; $p
$level = $post_data[$p][‘level’];
if ($level > $llevel) {
$t_out .= ‘
- ‘; for ($k = $llevel + 1; $k < $level; $k++) {
$t_out .= ‘
‘;
}
if ($level < $llevel) { $t_out .= ‘ ‘; for ($k = $llevel; $k > $level; $k–) {
$t_out .= ‘
‘; }
}
if ($post_data[$p][‘type’] == ‘c’) {
$t_out .= ‘
} else {
$the_title = htmlspecialchars (trim ($post_data[$p][‘title’])); if ($the_title == ”) { $the_title = DDSG_NO_TITLE;
}
$t_out .= ‘
if ($show_post_date) { // $t_out .= ‘ ‘ . date ($date_format, strtotime ($post_data[$p][‘date’]));
$t_out .= ‘ ‘ . date_i18n ($date_format, strtotime ($post_data[$p][‘date’]));
}
if ($comments_on_posts) { if ($show_zero_comments || ($post_data[$p][‘comments’] > 0)) { $t_out .= ‘ (‘ . $post_data[$p][‘comments’] . ‘)’; }
}
}
$llevel = $level;
}
$t_out .= ‘ ‘; for ($k = $llevel; $k > 0; $k–) {
$t_out .= ‘
‘;
}
$t_out .= ‘
‘;
return $t_out;
}
/* * Merge categories with posts */
function ddsg_merge_cats_posts ($post_data, $posts, $cat_data, $num_posts, $num_cats, $comments_on_posts, $show_post_date) {
for ($c = 0; $c < $num_cats; $c++) {
$level = $cat_data[$c][‘level’];
$tmp_array = array(); $tmp_array[‘type’] = ‘c’; $tmp_array[‘id’] = $cat_data[$c][‘cat_id’]; $tmp_array[‘title’] = $cat_data[$c][‘cat_name’]; $tmp_array[‘level’] = $level;
$post_data[] = $tmp_array;
$k = 0; while (isset($posts[$k]) && ($posts[$k]->category_id != $cat_data[$c][‘cat_id’]) && ($k < $num_posts)) { $k++;
}
$any_posts = 0;
while (isset($posts[$k]) && ($posts[$k]->category_id == $cat_data[$c][‘cat_id’]) && ($k < $num_posts)) {
$tmp_array = array(); $tmp_array[‘type’] = ‘p’; $tmp_array[‘id’] = $posts[$k]->ID; $tmp_array[‘title’] = $posts[$k]->post_title; $tmp_array[‘level’] = $level + 1; if ($comments_on_posts) $tmp_array[‘comments’] = $posts[$k]->comment_count; if ($show_post_date) $tmp_array[‘date’] = $posts[$k]->post_date;
$post_data[] = $tmp_array;
$k++;
}
}
return $post_data;
}
/* * Remove categories with no posts */
function ddsg_remove_empty_cats ($post_data) {
$llp = -1; $last_type = ‘x’; $last_level = ‘x’;
$last_del = FALSE;
$pdc = count ($post_data);
for ($i = $pdc — 1; $i >= 0; $i–) {
$type = $post_data[$i][‘type’]; $title = $post_data[$i][‘title’];
$level = $post_data[$i][‘level’];
if (($type == ‘c’) && ($last_type == ‘c’) && (($last_level $post_data[$i][‘type’] = ‘r’; $last_del = TRUE; } else { $last_del = FALSE;
}
$last_type = $type; $last_level = $level; if ($post_data[$i][‘type’] == ‘p’) {
$llp = $post_data[$i][‘level’];
}
}
$new_post_data = array(); foreach ($post_data as $pd) { if ($pd[‘type’] != ‘r’) { $new_post_data[] = $pd; }
}
return $new_post_data;
}
/* * Generate sitemap navigation */
function ddsg_generate_nav($total_pages, $current_page, $page_nav, $sm_name) {
global $wp_query;
$output1 = NULL;
if (strlen($sm_name) > 0) { // permalinks enabled
$the_url = get_bloginfo (‘url’);
if ($the_url{strlen ($the_url) -1} != «/») { $the_url = $the_url . «/» . $sm_name . «/»;
}
if ($total_pages > 1) {
if ($page_nav == 1) {
$output1 .=
”
” . DDSG_NAV1_PAGE . ” ” . $current_page . ” ” . DDSG_NAV1_OF . ” ” . $total_pages;
if ($current_page > 1) {
$output1 .= ‘ : ‘ . DDSG_NAV1_PREV . ”;
}
if ($current_page < $total_pages) {
$output1 .= ‘ : ‘ . DDSG_NAV1_NEXT . ”;
}
$output1 .= “
“
;
} else if ($page_nav == 2) {
$output1 .= ‘
‘ . DDSG_NAV2_PAGE . ‘ ‘;
for ($i = 1; $i if ($i == $current_page) { $output1 .= $i . ” “; } else {
$output1 .= ” . $i . ‘ ‘;
}
}
$output1 .= “
“
;
}
}
} else { // permalinks not enabled
$the_url = get_bloginfo (‘url’);
if ($the_url{strlen ($the_url) -1} != «/») { $the_url = $the_url . «/index.php»;
}
if ($total_pages > 1) {
if ($page_nav == 1) {
$output1 .=
”
” . DDSG_NAV1_PAGE . ” ” . $current_page . ” ” . DDSG_NAV1_OF . « „ . $total_pages;
if ($current_page > 1) {
$output1 .= ‘ : SELECT cat_ID as category_ID, cat_name, category_parent FROM {$tp}categories GROUP BY cat_ID ORDER BY category_parent, cat_name
“);
$cats_with_children = (array)$wpdb->get_col (” SELECT category_parent FROM {$tp}categories WHERE category_parent != ‘0’ GROUP BY category_parent ORDER BY category_parent
“, 0);
} else { // >= 2.3
$cats = (array)$wpdb->get_results (” SELECT {$tp}terms.term_id as category_ID, {$tp}terms.name as cat_name, {$tp}term_taxonomy.parent as category_parent FROM {$tp}terms, {$tp}term_taxonomy WHERE {$tp}term_taxonomy.taxonomy = ‘category’ AND {$tp}terms.term_id = {$tp}term_taxonomy.term_id GROUP BY category_ID ORDER BY category_parent, cat_name
“);
$cats_with_children = (array)$wpdb->get_col (” SELECT parent as category_parent FROM {$tp}term_taxonomy WHERE parent != ‘0’ AND {$tp}term_taxonomy.taxonomy = ‘category’ GROUP BY category_parent ORDER BY category_parent
“, 0);
}
$sort_string = ”; switch ($post_sort_order) { case ‘datea’: $sort_string = ‘post_date ASC’; break; case ‘dated’: $sort_string = ‘post_date DESC’; break; default: // title $sort_string = ‘post_title’; break;
}
$extra_data = ”; if ($comments_on_posts) { $extra_data .= ‘, comment_count ‘; } if ($show_post_date) { $extra_data .= ‘, post_date ‘;
}
$dup_check = ”;
$pass_check = ”; if ($hide_protected) { $pass_check = ” AND post_password = ” “;
}
$future_check = ”; if ($hide_future) { $future_check = ” AND post_status != ‘future’ “;
}
if ($ver < 2.3) {
$posts = (array)$wpdb->get_results (” SELECT ID, category_id, post_title $extra_data FROM {$tp}posts, {$tp}post2cat WHERE {$tp}posts.ID = {$tp}post2cat.post_id AND post_status = ‘publish’ AND post_type = ‘post’ $dup_check $pass_check $future_check ORDER BY category_id, $sort_string
“);
} else { // >= 2.3
$posts = (array)$wpdb->get_results (” SELECT ID, {$tp}term_taxonomy.term_id as category_id, post_title $extra_data FROM {$tp}posts, {$tp}term_relationships, {$tp}term_taxonomy WHERE {$tp}posts.ID = {$tp}term_relationships.object_id AND {$tp}term_relationships.term_taxonomy_id = {$tp}term_taxonomy.term_taxonomy_id AND {$tp}term_taxonomy.taxonomy = ‘category’ AND post_status = ‘publish’ AND post_type = ‘post’ $dup_check $pass_check $future_check ORDER BY category_id, $sort_string
“);
}
$num_cats = count ($cats);
$num_posts = count ($posts);
$cat_data = array ();
$post_data = array ();
$cat_data = ddsg_get_cats ($cat_data, $cats, $num_cats, $cats_with_children, $excluded_cats);
$num_cats = count ($cat_data);
$post_data = ddsg_merge_cats_posts ($post_data, $posts, $cat_data, $num_posts, $num_cats, $comments_on_posts, $show_post_date);
$post_data = ddsg_remove_empty_cats ($post_data);
$num_posts = count ($post_data);
}
if ($what_to_show != ‘posts’) {
$sort_string = ”; switch ($page_sort_order) { case ‘datea’: $sort_string = ‘post_date ASC’; break; case ‘dated’: $sort_string = ‘post_date DESC’; break; case ‘menua’: $sort_string = ‘menu_order ASC’; break; case ‘menud’: $sort_string = ‘menu_order DESC’; break; default: // title $sort_string = ‘post_title’; break;
}
$extra_data = ”; if ($comments_on_pages) { $extra_data .= ‘, comment_count ‘; } if ($show_page_date) { $extra_data .= ‘, post_date ‘;
}
$pass_check = ”; if ($hide_protected) { $pass_check = ” AND post_password = ” “;
}
$pages = (array)$wpdb->get_results (” SELECT post_title, ID, post_parent $extra_data FROM {$tp}posts WHERE post_type = ‘page’ AND post_status = ‘publish’ $pass_check ORDER BY post_parent, $sort_string
“);
$pages_with_children = (array)$wpdb->get_col (” SELECT post_parent FROM {$tp}posts WHERE post_type = ‘page’ AND post_status = ‘publish’ AND post_parent != ‘0’ GROUP BY post_parent ORDER BY post_parent
“, 0);
$num_pages = count ($pages);
$page_data = array ();
$page_data = ddsg_get_pages ($page_data, $pages, $num_pages, $pages_with_children, $excluded_pages, $comments_on_pages, $show_page_date);
$num_pages = count ($page_data);
}
$wpdb->flush ();
switch ($what_to_show) { case ‘posts’: $total_items = $num_posts; break; case ‘pages’: $total_items = $num_pages; break; default: $total_items = $num_posts + $num_pages; break;
}
$current_page = 1; if (get_query_var («pg»)) { $current_page = get_query_var («pg»);
}
if ($items_per_page $total_pages = 1; $items_per_page = $total_items; } else { $total_pages = (int)ceil($total_items / $items_per_page);
}
$t_start = ($current_page – 1) * $items_per_page; $t_end = $t_start + $items_per_page – 1; if ($t_end > $total_items) { $t_end = $total_items — 1;
}
if ($current_page < 1) { $current_page = 1; } else if ($current_page > $total_pages) { $current_page = $total_pages; $t_start = ($current_page — 1) * $items_per_page; $t_end = $t_start + $items_per_page — 1; if ($t_end > $total_items) { $t_end = $total_items — 1; }
}
$t_out = ”;
$t_out .= «\n\n\n\n»;
$t_out .= ‘
‘;
if ($page_nav_where != ‘bottom’) { $t_out .= ddsg_generate_nav ($total_pages, $current_page, $page_nav, $sm_name);
}
if ($what_to_show == ‘posts’) { // show just posts
$post_start = $t_start; $post_end = $t_end; if ($t_end >= $num_posts) { // *** added = $post_end = $num_posts — 1;
}
$t_out .= ddsg_display_posts ($post_data, $num_posts, $post_start, $post_end, $comments_on_posts, $new_window, $show_post_date, $date_format);
} else if ($what_to_show == ‘pages’) { // show just pages
$page_start = $t_start; $page_end = $t_end; if ($t_end > $num_pages — 1) { $page_end = $num_pages — 1;
}
$t_out .= ddsg_display_pages ($page_data, $num_pages, $page_start, $page_end, $comments_on_pages, $new_window, $show_page_date, $date_format);
} else { // show both
if ($which_first == ‘pages’) { $num1 = $num_pages; $num2 = $num_posts; } else { $num1 = $num_posts; $num2 = $num_pages;
}
if ($t_start > ($num1 — 1)) { $start1 = $end1 = 0; $start2 = $t_start — $num1; $end2 = $t_end — $num1; if ($end2 >= $num2) { $end2 = $num2 — 1; } } else if ($t_end < $num1) { $start2 = $end2 = 0; $start1 = $t_start; $end1 = $t_end; if ($end1 >= $num1) { $end1 = $num1 — 1; } } else { $start1 = $t_start; $end1 = $num1 — 1; $start2 = 0; $end2 = $items_per_page — ($end1 — $start1) — 2;
}
if ($end2 >= $num2) { $end2 = $num2 — 1; } if ($end1 >= $num1) { $end1 = $num1 — 1;
}
if ($which_first == ‘pages’) { $t_out .= ddsg_display_pages ($page_data, $num1, $start1, $end1, $comments_on_pages, $new_window, $show_page_date, $date_format); $t_out .= ddsg_display_posts ($post_data, $num2, $start2, $end2, $comments_on_posts, $new_window, $show_post_date, $date_format); } else { $t_out .= ddsg_display_posts ($post_data, $num1, $start1, $end1, $comments_on_posts, $new_window, $show_post_date, $date_format); $t_out .= ddsg_display_pages ($page_data, $num2, $start2, $end2, $comments_on_pages, $new_window, $show_page_date, $date_format);
}
}
if ($page_nav_where != ‘top’) { $t_out .= ddsg_generate_nav ($total_pages, $current_page, $page_nav, $sm_name);
}
if ($xml_path != ”) { if (($xml_where == ‘every’) OR ($current_page == $total_pages)) {
$t_out .= ‘
‘; }
}
$t_out .= ‘
‘ . DDSG_CREDITS . ‘ dagondesign.com
‘;
$t_out .= ‘
‘;
$t_out .= «\n\n\n\n»;
// Ampersand fix
$t_out = str_replace («&», «&», $t_out);
return $t_out;
}
/* * Create rewrite rules for sitemap pages */ function ddsg_permalinks ($rules) { global $wp_rewrite; $ddsg_sm_name = trim (get_option (‘ddsg_sm_name’)); if ($wp_rewrite->use_verbose_rules || !isset ($wp_rewrite->use_verbose_rules)) { $match_form = ‘$1’; } else { $match_form = ‘$matches[1]’;
}
if ($ddsg_sm_name != ”) { $newrules[$ddsg_sm_name . ‘/([0-9]{1,})/?$’] = ‘index.php?&pagename=’ . $ddsg_sm_name . ‘&pg=’ . $match_form; $newrules = array_merge ($newrules,$rules); return $newrules; } else { return $rules; }
}
/* * Initialize query var for sitemap permalinks */ function ddsg_query_vars ( $vars ) { $vars[] = «pg»; return $vars;
}
/* * Display sitemap if trigger is found */ function ddsg_generate_sitemap ($content) { if (strpos ($content, “”) !== FALSE) {
$content = preg_replace (‘/
\s*\s*/i’, “”, $content); $content = str_replace (”, ddsg_create_sitemap (), $content); } return $content;
}
add_filter (‘query_vars’, ‘ddsg_query_vars’);
add_filter (‘rewrite_rules_array’, ‘ddsg_permalinks’);
add_filter (‘the_content’, ‘ddsg_generate_sitemap’);
add_action (‘admin_menu’, ‘ddsg_add_option_pages’);
?>