j'ai un projet de type post personnalisé
l'URL qui a fonctionné hors de la boîte était:
www.myapp.com/project/POST-ID
et
www.myapp.com/project/POST-SLUG
maintenant, mon client a besoin que l'URL soit disponible dans l'adresse racine. J'ai donc ajouté le code suivant à functions.php
function na_remove_slug( $post_link, $post, $leavename ) {
if ( 'project' != $post->post_type || 'publish' != $post->post_status ) {
return $post_link;
}
$post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
return $post_link;
}
add_filter( 'post_type_link', 'na_remove_slug', 10, 3 );
function na_parse_request( $query ) {
if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) {
return;
}
if ( ! empty( $query->query['name'] ) ) {
$query->set( 'post_type', array( 'post', 'project', 'page' ) );
}
}
add_action( 'pre_get_posts', 'na_parse_request' );
cela fonctionne maintenant:
www.myapp.com/POST-SLUG
cela ne fonctionne pas si:
www.myapp.com/POST-ID
y a-t-il un moyen de le faire fonctionner?
Essayez de créer une règle de réécriture personnalisée et une balise de réécriture personnalisée. Cela devrait vous permettre de configurer une expression régulière pour capturer l'ID et manipuler la requête.
Règle d'API de réécriture/règle de réécriture "WordPress Codex https://goo.gl/kdEJd8 API de réécriture/balise d'ajout de réécriture" WordPress Codex https://goo.gl/PVLzLh