web-dev-qa-db-fra.com

the_author_meta ('user_url', $ author-> ID) ne fonctionne pas correctement. Comment puis-je résoudre ça?

J'ai 2 auteurs et un administrateur sur mon blog. J'utilise le code suivant dans mon contributors.php

function contributors() {
        global $wpdb;

        $authors = $wpdb->get_results("SELECT ID, user_nicename from $wpdb->users ORDER BY display_name");

        foreach($authors as $author) {

        echo the_author_image($author->ID);

        echo the_author_meta('display_name', $author->ID) . '</br>' ;
        echo the_author_meta('user_url', $author->ID) . '</br>';
        echo the_author_meta('description', $author->ID) . '</br>' ;
        echo the_author_meta('user_email', $author->ID) . '</br></br>' ;

        }
        }

        contributors();

Il imprime parfaitement la photo, le nom, la description et l'adresse électronique de tous les auteurs et administrateurs.

mais il n’imprime pas correctement le lien utilisateur.

  • pour l'administrateur ou l'ID utilisateur 1 l'impression de l'URL du blog
  • pour le 1er auteur ou l'ID utilisateur 2, l'URL correcte est imprimée.
  • pour le deuxième auteur ou utilisateur 3, cela n'imprime rien.

quel est le problème? Comment puis-je résoudre ça?

1
Riffaz Starr

Avez-vous vérifié la base de données pour l'URL de l'utilisateur. Peut-être que c'est ce qu'ils utilisaient pour s'inscrire.

Qu'en est-il de ce scénario -

  • Pour l'administrateur, la valeur par défaut de l'URL est l'URL du blog.
  • L'ID utilisateur 2 utilisait une URL lors de son inscription.
  • L'ID utilisateur 3 n'a pas renseigné le champ url lors de l'enregistrement.

Vous devriez d'abord vérifier leur URL dans la base de données. Il réside dans la table wp_users (je suppose que vous avez utilisé le préfixe de table wp_).

EDIT:

the_author_posts_link() et the_author_meta('user_url',$userID) ont des fonctionnalités différentes.

L'écran the_author_posts_link() affiche un lien vers tous les messages d'un auteur.

the_author_meta('user_url',$userID) affiche l'url de leur page d'accueil.

Donc, ce sont deux choses différentes. Je pense que votre meilleur pari est d'utiliser ce qui suit pour obtenir ce que vous essayez de terminer au lieu de the_author_meta('user_url', $userID). Vous ne pouvez pas également utiliser the_author_posts_link car il ne nécessite aucun argument et doit être utilisé à l'intérieur The Loop :

<a href="<?php echo get_author_posts_url( $author->ID ); ?>"><?php the_author_meta( 'display_name', $author->ID ); ?></a>
2
sakibmoon