web-dev-qa-db-fra.com

URL de l'auteur

Le permalien d'auteur par défaut est:

http://domain.com/author/{username}

Comment puis-je faire quelque chose comme ça?

http://domain.com/author/{username}/songs 
http://domain.com/author/{username}/books
http://domain.com/author/{username}/movies

Si quelqu'un visite des chansons de façon permanente, wp doit afficher les chansons de l'auteur respectif. Si quelqu'un visite des livres de façon permanente, wp devrait afficher les livres de leurs auteurs respectifs, et ainsi de suite! Toute idée de comment puis-je faire ça!?

Éditer plus tard Table mySQL: favs

  • identifiant
  • post_id
  • author_id
  • fav_type (chanson, livre, film)
1
Robert

En supposant que vous utilisez des types de publication personnalisés pour des chansons, des livres, etc.:

function add_rewrite_rules($rules) {
    $newrules['author/([^/]+)/songs/?$'] = 'index.php?post_type=songs&author=$matches[1]';
    $newrules['author/([^/]+)/songs/page/?([0-9]{1,})/?$'] = 'index.php?post_type=songs&locations=$matches[1]&paged=$matches[2]';

    $rules = $newrules + $rules;
    return $rules;
}

function flushRules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_filter('rewrite_rules_array', 'add_rewrite_rules');

/* This function should only really be run once per change of rules - comment out */
add_filter('init','flushRules');

Essayez les chaînes de requête ci-dessus "index.php? Post_type = songs & author = pseudo" et assurez-vous d'obtenir le bon post que vous recherchez sur votre site (vous devrez peut-être désactiver les liens permanents pour les tester).

Vous pouvez ensuite ajouter les règles à la fonction (en prenant note de la règle paginée pour chaque type de publication).

Je fais exactement cela sur un site en direct maintenant, donc c'est possible - il faut juste un peu de patience pour que les règles soient correctes.

Si vous n'utilisez pas de types de publication personnalisés, vous pouvez modifier les chaînes de requête ci-dessus de post_type = xxx en taxonomy = tagname ou tout ce dont vous avez besoin pour obtenir le listing souhaité.

3
Chris