I've recently created several custom post types in a wordpress site, with the code below, they are generating links in the correct form e.g. root/category/id/postname but each link to the full post, pagination or category 404's.
I've tried a number of popular solutions, appending /%category%/%post_id%/ to the url structure, rewriting function names but I'm getting nowhere fast.
With the wordpress permalink structure set to default e.g. root/?page_id=1257 everything works ok.
Any effort to add additional parameters to rewrite (see below) produces "Parse error: syntax error, unexpected ';'" even though no ';' is present.
'rewrite' => array(
'slug' => 'issue')
Any help appreciated - highly confused, very frustrated!
<?php
// CUSTOM POST TYPE 1
add_action('init', 'mjwpress_register');
function mjwpress_register() {
$args = array(
'label' => __('Press'),
'singular_label' => __('Press'),
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'new_item' => __('New Press Item'),
'hierarchical' => false,
'rewrite' => true,
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'comments', 'revisions', 'page-attributes', 'post-formats')
);
register_taxonomy('press-category', array('article'),
array(
'label' => 'Press Story Category',
'singular_label' => 'press-story-category',
'public' => TRUE,
'show_tagcloud' => TRUE,
'hierarchical' => TRUE,
'query_var' => TRUE,
'menu_position' => 5,
'rewrite' => TRUE)
);
register_post_type( 'mjwpress' , $args );
}
add_action('inthenews_init', 'inthenews_init');
add_action('save_post', 'save_mjwpress_options');
function inthenews_init(){
add_meta_box('newsmeta', 'Press Options', 'mjwpress_meta_options', 'mjwpress', 'normal', 'low');
}
function mjwpress_meta_options(){
global $post;
$custom = get_post_custom($post->ID);
$linkurl = $custom['linkurl'][0];
$linktitle = $custom['linktitle'][0];
?>
<div class='form-wrap'>
<div class='form-field'>
<label for='linkurl'>Link to External Publication:</label>
<input name='linkurl' value='<?php echo $linkurl; ?>' />
<p>E.g. http://www.example.com/article-title.php</p>
</div>
<div class='form-field'>
<label for='linktitle'>Title of External Publication:</label>
<input name='linktitle' value='<?php echo $linktitle; ?>' />
<p>E.g. Lib Dem Voice</p>
</div>
</div>
<?php
}
function save_mjwpress_options(){
global $post;
update_post_meta($post->ID, 'linkurl', $_POST['linkurl']);
update_post_meta($post->ID, 'linktitle', $_POST['linktitle']);
}
?>