WordPress.org

Ready to get started?Download WordPress

Forums

i need function that make wordpress use custom tables for old posts (1 post)

  1. semsem83
    Member
    Posted 1 year ago #

    I have a site with about 24,000 posts and 200 posts daily and the database will get huge soon. So I plan to transfer the old posts to custom tables to reduce the database load. There's no need to show these posts on the site. I just want to keep it for search engines and avoiding sql_calc_found_rows problems. These are the three tables I have created:

    wp_posts -> wp_custom_posts

    wp_postmeta -> wp_custom_postmeta

    wp_term_relationships -> wp_custom_term_relationships

    I have transferred old posts to these tables manually using phpMyAdmin and use a function to make WordPress use my custom post table instead of wp_posts if the post does not exists in it:

    <?php
    function custom_prefix_change($sql) {
        global $wpdb,$wp;
        $prefix = $wpdb->prefix;
        if(is_single()){
            //check if the post exists in the genuine posts table
            $results = $wpdb->get_results($sql,"ARRAY_A");
    
            if($results[0]['ID']){
                //if exists then return
                return $sql;
            }else{
                //else change the query
                $sql = str_replace("$wpdb->posts","{$wpdb->prefix}custom_posts",$sql);
            }
        }
        //echo $sql;
        return $sql;
    }
    add_action('posts_request',"custom_prefix_change");
    ?>

    However, my old posts in this case show up with no meta and taxonomies values. because wordpress still use the the default meta and relationships tables not my cutomes tables so i need function(s) to replace the default wp_postmeta and wp_term_relationships with my custom tables i just dont know the hook or filter that i should use ..

Topic Closed

This topic has been closed to new replies.

About this Topic