我在网站上为特定操作定义了自定义帖子类型功能。以实现特定类型的url结构。我从中删除了持续的slug,并将其替换为类别和品牌名称。
上一个url为
www.website。com/产品/名称
新url为
www.website。商品/类别/品牌/名称
你看,我已经把鼻涕虫完全去掉了。这是代码。现在的问题是,这些URL不起作用,我得到一个404页作为回报。我也尝试过冲洗永久墨水,但没有效果。
根据我的理解,由于删除了slug,查询正在“Post”中搜索,而不是“Custom Post Type”,但我不知道如何更正它。我们将非常感谢您的回复。
// Register our Custom Post type as aps-products
public static function register_cpt_aps_products() {
$permalinks = get_aps_settings(\'permalinks\');
$slug = (isset($permalinks[\'product-slug\'])) ? $permalinks[\'product-slug\'] : \'\';
// labels text for our post type aps-products
$labels = array(
// post type general name
\'name\' => __( \'APS Products\', \'aps-text\' ),
// post type singular name
\'singular_name\' => __( \'APS Product\', \'aps-text\' ),
\'name_admin_bar\' => __( \'APS Product\', \'aps-text\' ),
\'menu_name\' => __( \'APS Products\', \'aps-text\' ),
\'add_new\' => __( \'Add New APS Product\', \'aps-text\' ),
\'add_new_item\' => __( \'Add New APS Product\', \'aps-text\' ),
\'edit_item\' => __( \'Edit APS Product\', \'aps-text\' ),
\'new_item\' => __( \'New APS Product\', \'aps-text\' ),
\'view_item\' => __( \'View APS Product\', \'aps-text\' ),
\'archives\' => __( \'APS Products Archives\', \'aps-text\' ),
\'search_items\' => __( \'Search APS Products\', \'aps-text\' ),
\'insert_into_item\' => __( \'Insert into APS Product\', \'aps-text\' ),
\'featured_image\' => __( \'APS Product Image\', \'aps-text\' ),
\'set_featured_image\' => __( \'Set APS Product Image\', \'aps-text\' ),
\'remove_featured_image\' => __( \'Remove APS Product Image\', \'aps-text\' ),
\'use_featured_image\' => __( \'Use as APS Product image\', \'aps-text\' ),
\'not_found\' => __( \'No APS Products found\', \'aps-text\' ),
\'not_found_in_trash\' => __( \'No APS Products found in Trash\', \'aps-text\' )
);
$args = array(
\'labels\' => $labels,
\'public\' => true,
\'show_ui\' => true,
\'query_var\' => true,
\'publicly_queryable\' => true,
\'show_in_nav_menus\' => false,
\'menu_icon\' => \'dashicons-products\',
\'capability_type\' => \'aps-products\',
\'capabilities\' => array(
\'read_post\' => \'read_aps_product\',
\'edit_post\' => \'edit_aps_product\',
\'edit_posts\' => \'edit_aps_products\',
\'delete_posts\' => \'delete_aps_products\',
\'create_posts\' => \'create_aps_products\',
\'publish_posts\' => \'publish_aps_products\',
\'edit_published_posts\' => \'edit_published_aps_products\',
\'delete_published_posts\' => \'delete_published_aps_products\',
\'edit_others_posts\' => \'edit_others_aps_products\',
\'delete_others_posts\' => \'delete_others_aps_products\',
\'read_private_posts\' => \'read_private_aps_products\',
\'edit_private_posts\' => \'edit_private_aps_products\',
\'delete_private_posts\' => \'delete_private_aps_products\'
),
\'map_meta_cap\' => true,
\'hierarchical\' => true,
\'taxonomies\' => array(\'post_tag\',\'aps-cats\', \'aps-brands\', \'aps-attributes\', \'aps-filters\', \'aps-rating-bars\'),
\'has_archive\' => true,
\'show_in_menu\' => \'aps-products\',
\'supports\' => array( \'publicize\',\'title\', \'editor\', \'thumbnail\', \'comments\', \'author\', \'excerpt\' ),
\'register_meta_box_cb\' => array(__CLASS__, \'add_aps_products_metabox\'),
\'rewrite\' => array(\'slug\' => \'/%aps-cats%/%aps-brands%/\', \'with_front\' => false)
);
SO网友:Satyendra Prakash
仔细检查您的重写段塞。你可以试试这样的东西。
add_action(\'init\', \'create_brand\');
function create_brand()
{
register_taxonomy
(
\'sumo-brand-letter\',
array(),
array
(
\'hierarchical\' => true,
\'labels\' => array
(
\'name\' => _x(\'Letters\', \'taxonomy general name\'),
\'singular_name\' => _x(\'Letter\', \'taxonomy singular name\')
# And so one
),
\'show_ui\' => true,
\'query_var\' => \'brand-letter\',
\'rewrite\' => array(
\'slug\' => \'brand\',
),
)
);
register_post_type
(
\'sumo-brand-term\',
array
(
\'labels\' => array
(
\'name\' => _x(\'Brand Terms\', \'post type general name\'),
\'singular_name\' => _x(\'Brand Term\', \'post type singular name\')
# And so on …
),
\'supports\' => array(\'title\', \'editor\', \'thumbnail\'),
\'public\' => true,
\'rewrite\' => array
(
\'slug\' => \'brand/%sumo-brand-letter%\',
\'with_front\' => false
),
\'query_var\' => \'brand-term\',
\'has_archive\' => \'brand\',
\'taxonomies\' => array( \'sumo-brand-letter\' ),
)
);
}
add_filter(\'post_type_link\', \'brand_term_permalink\', 10, 4);
function brand_term_permalink($post_link, $post, $leavename, $sample)
{
if ( false !== strpos( $post_link, \'%sumo-brand-letter%\' ) ) {
$brand_letter = get_the_terms( $post->ID, \'sumo-brand-letter\' );
$post_link = str_replace( \'%sumo-brand-letter%\', array_pop( $brand_letter )->slug, $post_link );
}
return $post_link;
}