web-dev-qa-db-fra.com

Comment puis-je créer un lien vers le poste le plus récent d'une catégorie?

Comment créer un lien vers une catégorie - vers son message le plus récent/le plus récent?

Je veux afficher le message réel. Je ne veux pas afficher la catégorie avec un article en liste. Je vais être vraiment stupide ici ... :)

Mais dans mon imagination parfois sauvage et sans limites, quelque chose comme ceci devrait déjà être disponible:

domain.com/category-name/index.php?newest

ou

domain.com/category/category-name/index.php?latest&wpusers=happier-now

J'ai cherché et il y a beaucoup de solutions de niveau PHP. Et ce site ne me laissera pas poster plus de deux liens ici, donc désolé pour la fonctionnalité de limitation

... et pour référence, voici le meilleur des liens que j'ai examinés (certains sont 100% contextuels mais datés, je ne sais donc pas s'ils sont toujours efficaces avec WordPress):

résolu

Lien vers le poste le plus récent dans une catégorie?

Lien au dernier message de la catégorie

J'ai eu environ dix liens plus pertinents ...

Mais encore une fois, il semble vraiment qu'il ne soit pas nécessaire de faire UNIQUEMENT un PHP, une fonction ou un modèle. Il y a tellement de petits éléments sympas? Ceci et & que des éléments ajoutés à l'URL qu'il devrait en exister un qui obtienne le dernier message.

Un bon exemple est un lien de liste de lecture YouTube. Il charge la dernière vidéo et permet toutes sortes de capacités & hauteur & largeur & rel = 0.

Je suis un peu surpris que ce ne soit pas une fonctionnalité essentielle de WordPress.

Actuellement, j'ai plusieurs variantes de widgets qui peuvent afficher un article récent ou sélectionné sur la page d'accueil avec un extrait et une image sélectionnée. Lorsque quelqu'un clique sur le titre, l'image sélectionnée ou Lire plus, il est dirigé vers ce message.

Ainsi, je peux voir que les widgets peuvent créer les liens - je ne suis pas assez éclairé pour savoir comment utiliser le même concept pour créer un lien sans tout afficher.

3
Christopher Eller

Cela ne fait pas partie de la base, mais il est certainement possible d'ajouter, cependant - je ne considérerais pas comme une bonne idée de publier un seul message disponible pour plusieurs URL. Une redirection est donc probablement la meilleure solution. Bien sûr, cela nécessitera un peu de PHP, car WordPress ne fonctionne pas par magie ou par volonté.

Premièrement, nous associons une fonction à l’action parse_request , qui s’exécute lorsque WordPress détermine comment définir les vars de requête pour la requête principale.

Le code suivant suppose que de jolis permaliens sont activés et que les URL de catégorie ont une base de catégorie. Dans ces conditions, la variable category_name query var est définie afin que nous puissions vérifier s'il s'agit d'une demande pour une catégorie. Dans le même temps, nous vérifions également si un latest GET var est défini. Ensemble, ce code sera alors déclenché lorsqu'une URL ressemble à ceci:

http://example.com/category/some-category/?latest

Si ces conditions sont remplies, nous interrogeons un seul poste dans le nom de la catégorie demandée, via WP_Query , ce qui nous donnera par défaut le dernier message de cette catégorie.

Si une publication est trouvée, nous redirigeons vers l'URL de cette publication via wp_redirect .

Ce morceau de code peut aller dans le fichier functions.php de notre thème:

function wpa_latest_in_category_redirect( $request ){
    if( isset( $_GET['latest'] )
        && isset( $request->query_vars['category_name'] ) ){

        $latest = new WP_Query( array(
            'category_name' => $request->query_vars['category_name'],
            'posts_per_page' => 1
        ) );
        if( $latest->have_posts() ){
            wp_redirect( get_permalink( $latest->post->ID ) );
            exit;
        }

    }
}
add_action( 'parse_request', 'wpa_latest_in_category_redirect' );
8
Milo