冲突的WordPress
问题描述:
使用页面和岗位类型相同蛞蝓名字时,我有一些问题,在WordPress固定链接。冲突的WordPress
我已经创建了一个有固定链接页面“网格服务”: example.com/grid-services/
costum后键入“市场”,经过我也注册了,我创建了一个名为市场“网格服务”,用固定链接: example.com/markets/grid-services/
的问题 当我尝试访问example.com/grid-services/ URL,它全自动重定向我例子.COM /市场/网格服务/页URL
我曾尝试 当我注册后型我曾试图改变diferent结合的代码,但似乎没有任何工作。
register_post_type('markets',
array(
'labels' => $labels,
'public' => true,
'supports' => $supports,
'hierarchical' => true,
'rewrite' => array("slug" => "markets"),
'has_archive' => false,
)
);
可能是什么问题?
答
Finaly我有找到一个简单的答案,我只是删除从costum职位的固定链接加入 这2设置
'public' => false,
'show_ui' => true,
现在看起来好像没问题。 谢谢你的帮助。
答
给你另一种功能,它可以帮助你 -
function wp_cpt_unique_post_slug($slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug) {
if (in_array($post_status, array('draft', 'pending', 'auto-draft')))
return $slug;
global $wpdb, $wp_rewrite;
// store slug made by original function
$wp_slug = $slug;
// reset slug to original slug
$slug = $original_slug;
$feeds = $wp_rewrite->feeds;
if (! is_array($feeds))
$feeds = array();
$hierarchical_post_types = get_post_types(array('hierarchical' => true));
if ('attachment' == $post_type) {
// Attachment slugs must be unique across all types.
$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND ID != %d LIMIT 1";
$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_ID));
if ($post_name_check || in_array($slug, $feeds) || apply_filters('wp_unique_post_slug_is_bad_attachment_slug', false, $slug)) {
$suffix = 2;
do {
$alt_post_name = substr ($slug, 0, (200 - (strlen($suffix) + 1))) . "-$suffix";
$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_ID));
$suffix++;
} while ($post_name_check);
$slug = $alt_post_name;
}
} elseif (in_array($post_type, $hierarchical_post_types)) {
if ('nav_menu_item' == $post_type)
return $slug;
// Page slugs must be unique within their own trees. Pages are in a separate
// namespace than posts so page slugs are allowed to overlap post slugs.
$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d AND post_parent = %d LIMIT 1";
$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_type, $post_ID, $post_parent));
if ($post_name_check || in_array($slug, $feeds) || preg_match("@^($wp_rewrite->pagination_base)?\[email protected]", $slug) || apply_filters('wp_unique_post_slug_is_bad_hierarchical_slug', false, $slug, $post_type, $post_parent)) {
$suffix = 2;
do {
$alt_post_name = substr($slug, 0, (200 - (strlen($suffix) + 1))) . "-$suffix";
$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_type, $post_ID, $post_parent));
$suffix++;
} while ($post_name_check);
$slug = $alt_post_name;
}
} else {
// Post slugs must be unique across all posts.
$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d LIMIT 1";
$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_type, $post_ID));
if ($post_name_check || in_array($slug, $feeds) || apply_filters('wp_unique_post_slug_is_bad_flat_slug', false, $slug, $post_type)) {
$suffix = 2;
do {
$alt_post_name = substr($slug, 0, (200 - (strlen($suffix) + 1))) . "-$suffix";
$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_type, $post_ID));
$suffix++;
} while ($post_name_check);
$slug = $alt_post_name;
}
}
return $slug;
}
add_filter('wp_unique_post_slug', 'wp_cpt_unique_post_slug', 10, 6);
添加过滤器'wp_insert_post_data”。在那里你可以添加一些额外的价值与slu。。这将解决你的问题。 – Mickey
对不起,这是我在wordpress中的第一个项目,请问您能更具体吗? – ucu13
去通过下面的文章 - https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data 希望这有助于。 – Mickey