我使用显示here的示例创建了自定义帖子类型。就我而言,我正在为招聘广告创建职业发布类型。
一切似乎都很好。我的职业生涯部分出现在仪表板中,我可以创建招聘广告,其中/职业/职称是他们的永久链接。正如我所愿。但我无法查看它们。如果我点击视图或直接转到网址,我会收到404。
这是使用xampp和bitnami wordpress的新本地安装。它基本上是一个默认安装,我之前添加了一些插件,但出于调试目的,我已经禁用了所有插件。
有什么想法吗?
function create_posttype() {
$args = array(
'labels' => array(
'name' => __('Careers'),
'singular_name' => __('Careers'),
'all_items' => __('All Job Postings'),
'add_new_item' => __('Add New Job Posting'),
'edit_item' => __('Edit Job Posting'),
'view_item' => __('View Job Posting')
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'careers'),
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'capability_type' => 'post',
'supports' => array('title', 'editor', 'thumbnail'),
'exclude_from_search' => false,
'menu_position' => 6,
'has_archive' => true,
'menu_icon' => 'dashicons-format-status'
);
register_post_type('careers', $args);
}
add_action( 'init', 'create_posttype');
function my_add_meta_box(){
add_meta_box( 'job-details', 'Job Details', 'my_meta_box_cb', 'Careers', 'normal', 'default');
}
function my_meta_box_cb($post){
$values = get_post_custom( $post->ID );
$salary = isset( $values['salary'] ) ? esc_attr( $values['salary'][0] ) : "";
$salary_unit = isset( $values['salary_unit'] ) ? esc_attr( $values['salary_unit'][0] ) : "hr";
wp_nonce_field( 'job_details_nonce_action', 'job_details_nonce' );
$html = '';
$html .= '<label>Salary</label>';
$html .= '<input type="number" name="salary" id="salary" style="margin-top:15px; margin-left:9px; margin-bottom:10px;" value="'. $salary .'" />';
$html .= '<label> / </label>';
$html .= '<input type="text" list=salary_units name="salary_unit" id="salary_unit" style="margin-left:9px; margin-top:15px;" value="'. $salary_unit .'" />';
$html .= '<datalist id=salary_units><option>hr<option>day<option>month<option>annum</datalist>';
echo $html;
}
function my_save_meta_box($post_id){
// Bail if we're doing an auto save
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
// if our nonce isn't there, or we can't verify it, bail
if( !isset( $_POST['job_details_nonce'] ) || !wp_verify_nonce( $_POST['job_details_nonce'], 'job_details_nonce_action' ) ) return;
// if our current user can't edit this post, bail
if( !current_user_can( 'edit_post' ) ) return;
if(isset( $_POST['salary'] ) )
update_post_meta( $post_id, 'salary', $_POST['salary']);
if(isset( $_POST['salary_unit'] ) )
update_post_meta( $post_id, 'salary_unit', $_POST['salary_unit']);
}
add_action( 'add_meta_boxes', 'my_add_meta_box' );
add_action( 'save_post', 'my_save_meta_box' );
答案 0 :(得分:1)
当您注册新的帖子类型时,您需要刷新重写规则。
要做到这一点,请转到设置 - &gt;固定链接并按保存。
如果你正在构建一些你打算分发的东西,那么你想要自动刷新重写规则。有关详细信息,请参阅:https://codex.wordpress.org/Function_Reference/register_post_type#Flushing_Rewrite_on_Activation