Je suis en train de créer un site Web wordpress et il ne me reste plus qu'un problème: les flux RSS.
Actuellement, le site Web contient un fichier .htaccess
qui bloque l'accès aux pages /category/*
. Cela faisait partie de l'exigence que le site ne soit évidemment pas Wordpress, et /category
en est un bon indicateur.
Chaque catégorie est précédée d'une page qui affiche le contenu de la catégorie - donc /category/news
devient /news
.
Cependant, les flux RSS semblent toujours indiquer /category/xxx/feed
- existe-t-il un moyen de supprimer cette partie /category/
? Pour que les gens puissent voir le flux RSS à http://example.com/news/feed
?
J'ai essayé de manipuler le fichier .htaccess
, mais je ne suis pas tout à fait sûr de le créer. Chaque recherche a donné des résultats indiquant comment diriger un flux vers Feedburner à la place, ce que je ne cherche pas du tout à faire.
J’ai trouvé (à mon avis) le moyen le plus simple et le plus simple de le faire et j’ai pensé que je devrais le laisser comme réponse au cas où quelqu'un trébucherait sur ce fil.
J'ai téléchargé et installé le plugin WP WP No Category Base et il a fait exactement ce dont j'avais besoin.
Malheureusement, je n'ai jamais essayé les autres réponses (j'ai dû passer à un projet plus urgent), je ne peux donc pas savoir si certaines d'entre elles fonctionnent.
Lien mis à jour : Aucune catégorie de base (WPML)
Après réflexion, ceci peut être réalisé avec un abus créatif des flux existants:
Quelque chose comme ça:
Category_Feed_At_Page::on_load();
/**
* Repurpose page feeds for category of same name feeds.
*/
class Category_Feed_At_Page {
static function on_load() {
add_action( 'pre_get_posts', array( __CLASS__, 'pre_get_posts' ) );
add_action( 'do_feed_rdf', array( __CLASS__, 'do_feed' ), 9 );
add_action( 'do_feed_rss', array( __CLASS__, 'do_feed' ), 9 );
add_action( 'do_feed_rss2', array( __CLASS__, 'do_feed' ), 9 );
add_action( 'do_feed_atom', array( __CLASS__, 'do_feed' ), 9 );
}
/**
* Change page's comment feed into category feed.
*
* @param WP_Query $query
*/
static function pre_get_posts( $query ) {
if ( $query->is_main_query() && $query->is_page() && $query->is_feed() ) {
$name = $query->get( 'pagename' );
require_once( ABSPATH . 'wp-admin/includes/taxonomy.php' );
if ( category_exists( $name ) ) {
$category = get_category_by_slug( $name );
$query->set( 'category_name', $name );
$query->set( 'cat', $category->term_id );
$query->set( 'pagename', '' );
$query->is_page = false;
$query->is_comment_feed = false;
$query->is_category = true;
$query->is_singular = false;
remove_action( 'do_feed_rdf', array( __CLASS__, 'do_feed' ), 9 );
remove_action( 'do_feed_rss', array( __CLASS__, 'do_feed' ), 9 );
remove_action( 'do_feed_rss2', array( __CLASS__, 'do_feed' ), 9 );
remove_action( 'do_feed_atom', array( __CLASS__, 'do_feed' ), 9 );
remove_action( 'template_redirect', 'redirect_canonical' );
}
}
}
/**
* Redirect real category feed to page feed.
*/
static function do_feed() {
if ( ! is_category() )
return;
$name = get_query_var( 'category_name' );
$page = get_page_by_path( $name );
if ( ! empty( $page ) ) {
wp_safe_redirect( get_post_comments_feed_link( $page->ID ) );
die;
}
}
}
Vous savez que vous pouvez modifier les préfixes d’étiquette et de catégorie sur la page des paramètres de permaliens, non?
Donc si cela vous dérange d'avoir la "catégorie" dans "/ catégorie/nouvelles", mais accepte d'avoir "/ cat/nouvelles", vous pouvez changer cela ici.