J'ai eu une demande d'un client qui me cause un peu mal à la tête! Ils veulent un flux RSS qui montre un contenu qui ne figure nulle part sur le site.
J'ai enregistré un nouveau type de message personnalisé (code simplifié);
$alert_args = array(
'public' => false,
'show_ui' => true,
'label' => 'Alerts',
'has_archive' => true,
'supports' => array( 'title', 'editor' ),
);
register_post_type( 'alerts', $alert_args );
Pour que le flux RSS fonctionne, il semble que l'argument public
soit défini sur TRUE
, mais je ne souhaite pas que ces publications soient indexées par Google ou utilisées par les visiteurs du site Web. Avez-vous une idée de la façon dont le flux RSS peut fonctionner de manière autonome?
Merci Dan.
---MODIFIER---
S'il vous plaît noter que finalement j'ai eu le changement get_post_type()
à get_query_var( 'post_type' )
parce que l'ancien ne fonctionne pas avec les pages de modèle d'archive. Voir le code;
if( 'alerts' === get_query_var( 'post_type' ) && ! is_feed() )
{
$GLOBALS[ 'wp_query' ]->set_404();
status_header( 404 );
nocache_headers();
}
Vous pouvez essayer de forcer un 404
en utilisant cette méthode :
/**
* Force 404 on all "alerts" custom post type pages except for the feed
*
* @see https://wordpress.stackexchange.com/a/162303/26350
*/
add_action( 'template_redirect', function() {
if( 'alerts' === get_post_type() && ! is_feed() )
{
$GLOBALS['wp_query']->set_404();
status_header( 404 );
nocache_headers();
}
} );
avec la configuration suivante:
$alert_args = array(
'public' => true,
'show_ui' => true,
'has_archive' => true,
'exclude_from_search' => true,
'label' => 'Alerts',
'supports' => array( 'title', 'editor' ),
);
register_post_type( 'alerts', $alert_args );
pour autoriser uniquement l'accès au flux pour le type de publication personnalisé alerts
.
Vous pouvez également envisager d’ajouter une vérification ! is_user_logged_in()
supplémentaire si vous souhaitez autoriser les utilisateurs connectés à afficher les alertes ou ! current_user_can( 'some_capability' )
pour une fonctionnalité utilisateur exigence.