function zn_norm_path( $url ) {
$p = wp_parse_url( html_entity_decode( trim( $url ) ) );
if ( ! $p ) return '';
$host = isset( $p['host'] ) ? strtolower( preg_replace( '/^www\./', '', $p['host'] ) ) : '';
if ( $host && $host !== 'zahidenotes.com' ) return '';
return '/' . trim( strtolower( isset( $p['path'] ) ? $p['path'] : '' ), '/' );
}
function zn_tokens( $s ) {
$s = preg_replace( '/_\d+$/', '', strtolower( $s ) );
$parts = preg_split( '/[^a-z0-9]+/', $s, -1, PREG_SPLIT_NO_EMPTY );
$stop = array( 'the', 'of', 'to', 'for', 'and', 'a', 'an', 'in', 'on', 'pdf', 'download', 'free', 'by', 'with', 'is', 'your', 'at', 'all' );
$out = array();
foreach ( $parts as $w ) {
if ( in_array( $w, $stop, true ) ) continue;
if ( preg_match( '/^20[1-3]\d$/', $w ) ) continue;
if ( strlen( $w ) > 3 && substr( $w, -1 ) === 's' ) $w = substr( $w, 0, -1 );
$out[ $w ] = true;
}
return array_keys( $out );
}
function zn_score( $a, $b ) {
if ( ! $a || ! $b ) return 0;
$i = count( array_intersect( $a, $b ) );
if ( ! $i ) return 0;
$u = count( array_unique( array_merge( $a, $b ) ) );
return 0.7 * ( $i / count( $a ) ) + 0.3 * ( $i / $u );
}
/* 404 par: jo purana URL approve ho chuka hai usay naye page par 301 */
add_action( 'template_redirect', function () {
if ( ! is_404() ) return;
$path = '/' . trim( strtolower( (string) parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ) ), '/' );
$map = get_option( 'zn_map', array() );
if ( isset( $map[ $path ] ) && strpos( $map[ $path ], 'id:' ) === 0 ) {
$l = get_permalink( (int) substr( $map[ $path ], 3 ) );
if ( $l ) { wp_redirect( $l, 301 ); exit; }
}
}, 0 );
add_action( 'admin_menu', function () {
add_management_page( 'ZN Link Mapper', 'ZN Link Mapper', 'manage_options', 'zn-mapper', 'zn_mapper_page' );
} );
function zn_mapper_form( $act, $offset, $label, $auto = false, $extra = '' ) {
echo '
';
if ( $auto ) echo '';
}
function zn_mapper_page() {
if ( ! current_user_can( 'manage_options' ) ) return;
echo 'ZN Link Mapper ';
if ( ! function_exists( 'zn_link_is_broken' ) || ! function_exists( 'zn_find_post_id' ) ) {
echo '
Pehle ZN Fixer aur ZN Link Cleaner snippets active hone chahiye.
';
return;
}
global $wpdb;
$act = isset( $_POST['act'] ) ? sanitize_key( $_POST['act'] ) : '';
$offset = isset( $_POST['offset'] ) ? absint( $_POST['offset'] ) : 0;
if ( $act ) check_admin_referer( 'zn_map' );
$batch = 50;
$busy = false;
/* ---- 1) SCAN ---- */
if ( $act === 'scan' ) {
$scan = $offset === 0 ? array() : get_option( 'zn_scan', array() );
$ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_type IN ('post','page') AND post_status IN ('publish','draft','private') ORDER BY ID ASC LIMIT %d OFFSET %d", $batch, $offset ) );
foreach ( $ids as $id ) {
$c = $wpdb->get_var( $wpdb->prepare( "SELECT post_content FROM {$wpdb->posts} WHERE ID=%d", $id ) );
if ( ! preg_match_all( '#]*?href=(["\'])(.*?)\1#is', $c, $mm ) ) continue;
foreach ( $mm[2] as $u ) {
if ( ! zn_link_is_broken( $u ) ) continue;
$path = zn_norm_path( $u );
if ( ! $path || $path === '/' ) continue;
$scan[ $path ] = isset( $scan[ $path ] ) ? $scan[ $path ] + 1 : 1;
}
}
update_option( 'zn_scan', $scan, false );
$offset += count( $ids );
if ( count( $ids ) === $batch ) {
$busy = true;
echo 'Scan ho raha hai... ' . (int) $offset . ' items check hue. Tab band na karein.
';
zn_mapper_form( 'scan', $offset, 'Agla batch', true );
} else {
echo 'Scan mukammal. ' . count( $scan ) . ' alag broken URLs mile. Neeche review karein.
';
}
}
/* ---- 2) SAVE ---- */
if ( $act === 'save' ) {
$map = get_option( 'zn_map', array() );
$paths = isset( $_POST['p'] ) ? (array) wp_unslash( $_POST['p'] ) : array();
$chs = isset( $_POST['m'] ) ? (array) wp_unslash( $_POST['m'] ) : array();
foreach ( $paths as $h => $path ) {
$path = sanitize_text_field( $path );
$v = isset( $chs[ $h ] ) ? sanitize_text_field( $chs[ $h ] ) : 'skip';
if ( $v === 'remove' || preg_match( '/^id:\d+$/', $v ) ) $map[ $path ] = $v; else unset( $map[ $path ] );
}
update_option( 'zn_map', $map, false );
echo 'Choices save ho gaye. Jo URL "naye page" par set hain unka purana link Google/visitors ke liye bhi ab naye page par redirect hoga.
';
}
/* ---- 3) APPLY ---- */
if ( $act === 'apply' ) {
$dry = ! empty( $_POST['dry'] );
$map = get_option( 'zn_map', array() );
$ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_type IN ('post','page') AND post_status IN ('publish','draft','private') ORDER BY ID ASC LIMIT %d OFFSET %d", $batch, $offset ) );
$re = 0; $rm = 0; $posts = 0;
foreach ( $ids as $id ) {
$old = $wpdb->get_var( $wpdb->prepare( "SELECT post_content FROM {$wpdb->posts} WHERE ID=%d", $id ) );
$new = preg_replace_callback(
'# ]*?href=(["\'])(.*?)\1[^>]*>(.*?) #is',
function ( $m ) use ( $map, &$re, &$rm ) {
$path = zn_norm_path( $m[2] );
if ( ! $path || ! isset( $map[ $path ] ) ) return $m[0];
$ch = $map[ $path ];
if ( $ch === 'remove' ) { $rm++; return $m[3]; }
if ( strpos( $ch, 'id:' ) === 0 ) {
$link = get_permalink( (int) substr( $ch, 3 ) );
if ( ! $link ) return $m[0];
$frag = ( ( $h = strpos( $m[2], '#' ) ) !== false ) ? substr( $m[2], $h ) : '';
$pos = strpos( $m[0], $m[2] );
$re++;
return substr_replace( $m[0], $link . $frag, $pos, strlen( $m[2] ) );
}
return $m[0];
},
$old
);
if ( $new === null || $new === $old ) continue;
$posts++;
if ( ! $dry ) {
if ( ! get_post_meta( $id, '_zn_backup_map', true ) ) add_post_meta( $id, '_zn_backup_map', wp_slash( $old ), true );
$wpdb->update( $wpdb->posts, array( 'post_content' => $new ), array( 'ID' => $id ) );
clean_post_cache( $id );
}
}
$offset += count( $ids );
echo '' . ( $dry ? 'DRY RUN: ' : '' ) . (int) $offset . ' items check hue. Is batch mein ' . $posts . ' posts, ' . $re . ' links naye page par, ' . $rm . ' links hata diye' . ( $dry ? ' (kuch save nahi hua)' : '' ) . '.
';
if ( count( $ids ) === $batch ) {
$busy = true;
zn_mapper_form( 'apply', $offset, 'Agla batch', true, $dry ? ' ' : '' );
} else {
echo '';
}
}
if ( $busy ) { echo ''; return; }
/* ---- Buttons ---- */
echo 'Step 1:
';
zn_mapper_form( 'scan', 0, 'Scan karo (broken links dhoondo)' );
$scan = get_option( 'zn_scan', array() );
if ( ! $scan ) { echo ''; return; }
arsort( $scan );
$map = get_option( 'zn_map', array() );
/* ---- Review ---- */
$pool = array();
foreach ( $wpdb->get_results( "SELECT ID, post_title, post_name, post_type FROM {$wpdb->posts} WHERE post_status='publish' AND post_type IN ('post','page')" ) as $r ) {
$pool[] = array( 'id' => (int) $r->ID, 'title' => $r->post_title, 'type' => $r->post_type, 'tok' => zn_tokens( $r->post_title . ' ' . $r->post_name ) );
}
echo 'Step 2: Review Har purane URL ke saamne sahi page chunein. "Abhi chhod do" ka matlab link jaisa hai waisa rahega. Jo URL kisi page se match nahi karte unhe "Link hata do" par rakhein.
';
echo '';
echo 'Step 3: Articles mein lagao Pehle Dry run, phir asli.
';
zn_mapper_form( 'apply', 0, 'Dry run (sirf check)', false, ' ' );
zn_mapper_form( 'apply', 0, 'Asli apply karo' );
echo '';
}
Skip to content
This story is not a traditional story of a woodcutter and his axe. This is another story of a King and his sons. This story also gives you a moral lesson that Honesty is The Best Policy. Now I hope your will Enjoy reading the story. Please give your feedback after you finish the story.
Honesty is the Best Policy, New Story
Once there lived a King. He was famous for his justice and honesty. He treated people with love and care. His peoples were very happy to have him as their king. As the king became old and feeble, he was worried about his successor. He had four sons. He decided to choose the best of them as his successor. He called for his sons. When they arrived. He gave everyone a seed and asked them to sow the seed and take good care of the new plant for one year. He told them that he would appoint the boy whose plant will be more healthy and beautiful his successor.
The name of his youngest son was Saleem. He was ten years old. He also sowed his seed. He watered it daily and took great care of it. As the months passed by, nothing grew out of its vase. He was worried. At last one solid year passed and the day came when all the four sons of the king brought their plants in front of him. The other three sons had healthy plants with beautiful flowers. Saleem’s vase just contained soil. There was not a single leaf or sapling on his vase.
The King smiled and said, “I gave you the defective seeds which could never be germinated. Now Saleem will be your next King. He, not like you, did not replace the seed with a healthy one. He is truly an honest boy and honesty is the first and foremost quality of a good ruler.”
Moral:
Honesty is the Best Policy
More Stories>>>
1. Story of Woodcutter and his axe
2. A hungry Dog Story
3. A friend in need is a friend indeed story
4. Kindeness never goes unrewarded story
5. Where there is a will there is a way story