Akash Gajbhiye Akash Gajbhiye - 4 months ago 16
HTML Question

custom post type redirects to home page in wordpress

I created this custom post type

function my_custom_post_game() {
$labels = array(
'name' => _x( 'Game', 'post type general name' ),
'singular_name' => _x( 'Games', 'post type singular name' ),
'add_new' => _x( 'Add New', 'Game' ),
'add_new_item' => __( 'Add New Game' ),
'rewrite' =>array( 'slug' => 'game' ),
'edit_item' => __( 'Edit Game' ),
'new_item' => __( 'New Game' ),
'all_items' => __( 'All Games' ),
'view_item' => __( 'View Game' ),
'search_items' => __( 'Search Game' ),
'not_found' => __( 'No Games found' ),
'not_found_in_trash' => __( 'No Games found in the Trash' ),
'parent_item_colon' => '',
'menu_name' => 'Games'
);
$args = array(
'labels' => $labels,
'description' => 'Holds our Games and Game specific data',
'public' => true,
'menu_position' => 5,
'supports' => array( 'title', 'editor', 'thumbnail','custom-fields', 'comments' ),
'has_archive' => true,
);
register_post_type( 'games', $args );
}
add_action( 'init', 'my_custom_post_game' );


This is the loop on homepage

$counter = 0;
$args = array( 'post_type' => 'Game', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
echo $post_id[rand(0,sizeof($post_id))];
if($counter < 2){
?>
<a href=<?php get_post_permalink()?>>
<div id="mypost" class="col-md-5" style="min-height:400px;">
<?php the_post_thumbnail('large');
?>
</div>
</a>
<div class="col-md-1"></div>
<?php
$counter++;
}
else {?>
<a href=<?php get_post_permalink()?>>
<div id="mypost" class="col-md-3" href=<?php get_permalink()?>>
<!-- post display --> <?php echo get_post_permalink()?>
<?php the_post_thumbnail('medium'); ?>
</div>
</a>
<div class="col-md-1"></div>
<?php
}
endwhile; ?>


permalink gives
http://localhost/indigamer/?post_type=game&p=63

but when I right-click on the div block and copy link location, it gives a link to homepage

I have created single-game.php in my theme's root folder

here is the code

<?php get_header(); ?>

<div id="primary" class="content-area">

<main id="main" class="site-main site-main--single" role="main">

test

</main><!-- #main -->

</div><!-- #primary -->




Answer

I think you have a few problems in your code.

try adding:

$args = array(
'labels'        => $labels,
'description'   => 'Holds our Games and Game specific data',
'public'        => true,
'menu_position' => 5,
'supports'      => array( 'title', 'editor', 'thumbnail','custom-fields',             'comments' ),
 'rewrite' => array('slug' => 'games'),
 'has_archive'   => true,
);
register_post_type( 'games', $args ); 

in the WP query, use the slug:

$args = array( 'post_type' => 'game', 'posts_per_page' => 10 );

don't forget to add

wp_reset_postdata();

EDIT: Saw some more errors: You need to be doing

href="<?php echo get_post_permalink(); ?>"