Question

J'ai posé cette question auparavant, ce qui a résolu mon problème, mais encore j'ai toujours problème avec elle,

J'ai une fonction pour afficher les tweets d'un utilisateur qui rapportez de un champ personnalisé, le code de champ personnalisé fonctionne parfaitement, parce que quand je echo the get_post_meta dans mon single.php je reçois la valeur qui est entrée

Maintenant, la question est quand je tente de récupérer la valeur du champ personnalisé à une fonction twitter tweets ne viennent pas,

voici mon code:

function tweet(){

$doc = new DOMDocument();

if ( $meta =get_post_meta($post->ID, 'dbt_Username', true) ) { 
$feed = "http://twitter.com/statuses/user_timeline/$meta.rss"; 
$doc->load($feed); 
  $outer = "<ul>";
  $max_tweets = 5;    

  $i = 1;
  foreach ($doc->getElementsByTagName('item') as $node) {
    $tweet = $node->getElementsByTagName('title')->item(0)->nodeValue;


    $tweet = substr($tweet, stripos($tweet, ':') + 1);   


    $tweet = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', 
          '<a href="$1">$1</a>', $tweet);


    $tweet = preg_replace("/@([0-9a-zA-Z]+)/", 
          "<a href=\"http://twitter.com/$1\">@$1</a>", 
          $tweet);

    $outer .= "Twiter Updates by:".get_option('tweetID')."<li>". $tweet  . "</li>\n";


    if($i++ >= $max_tweets) break;
  }
   $outer .= "</ul>\n";
  return $outer;
  }
}

add_action('admin_menu', 'tweet_fetch1');

function append_the_content1($content) {
     $content .= "<div class='post'><p>".tweet(get_post_meta($post->ID, 'dbt_Username', true))."</p></div>";
      return $content;
      }
add_filter('the_content', 'append_the_content1');
Était-ce utile?

La solution

Tant de questions ici ...

D'abord, je ne suis pas sûr de ce que cette ligne fait:

add_action('admin_menu', 'tweet_fetch1');

Si vous n'avez pas vraiment une fonction appelée tweet_fetch1 qui fonctionne lorsque les charges d'administration, vous devez supprimer ce add_action. Et si vous avez une telle fonction, pourquoi est votre add_action à cet endroit? La première étape pour éviter les problèmes est propre, lisible, code commenté les fonctions des groupes et les crochets logiquement.

En second lieu, dans les deux vos fonctions, vous essayez de référence post-$> ID où aucun objet poste est disponible. Vous pouvez généralement le rendre disponible en mondialisant il.

global $post;

Troisièmement, votre fonction appelée « tweet » accepte aucun argument, mais quand vous l'appelez de l'intérieur de votre fonction append_the_content1 (), vous essayez de transmettre la valeur de méta pour dbt_Username.

$content .= "<div class='post'><p>".tweet(get_post_meta($post->ID, 'dbt_Username', true))."</p></div>";

Ceci est incorrect ... et inutile, comme vous prenez alors la même valeur méta (à nouveau) à l'intérieur de la fonction Tweet () à l'aide get_post_meta. Vous devez supprimer l'argument (les choses entre les parenthèses) lorsque vous appelez le funciton Tweet (). Comme ceci:

$content .= "<div class='post'><p>".tweet()."</p></div>";

Enfin - bien que ce soit juste une suggestion, et n'est pas strictement un problème avec votre code - Je ne sais pas ce que tout ce qui est preg remplacement pour. Si vous essayez de lien vers le tweet original, vous pouvez tirer l'URI droite de la flux Twitter. Vous pouvez également créer des liens à l'intérieur de tweets cliquable pratique make_clickable () fonction .

Votre problème ici est pas get_post_meta - c'est avec PHP. Sans manquer de respect, mais il vous aider énormément à rafraîchir les bases afin que vous puissiez mieux comprendre le code que vous écrivez, et les réponses que les gens vous donnent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top