get_post_meta() problem again

时间:2010-12-18 作者:Niraj Chauhan

我之前问过这个问题,解决了我的问题,但我仍然有问题,

我有一个功能来显示用户从自定义字段获取的推文,自定义字段代码工作正常,因为当我echo the get_post_meta 在我的单曲里。php我得到输入的值

现在的问题是,当我试图从自定义字段获取twitter函数的值时,推文不会出现,

这是我的代码:

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\');

1 个回复
最合适的回答,由SO网友:MathSmath 整理而成

这里有很多问题。。。

首先,我不确定这条线在做什么:

add_action(\'admin_menu\', \'tweet_fetch1\');
如果您没有在管理员加载时运行的名为tweet\\u fetch1的函数,那么应该删除此add\\u操作。如果您确实有这样一个功能,为什么您的add\\u操作在这个位置?避免问题的第一步是对组函数进行干净、可读、有注释的代码编写,并在逻辑上钩住它们。

其次,在这两个函数中,您都试图引用没有可用post对象的$post->ID。您通常可以通过全球化使其可用。

global $post;
第三,名为“tweet”的函数不接受任何参数,但当您从append\\u the\\u content1()函数内部调用它时,您试图将dbt\\u Username的元值传递给它。

$content .= "<div class=\'post\'><p>".tweet(get_post_meta($post->ID, \'dbt_Username\', true))."</p></div>";
这是不正确的。。。而且不必要,因为您随后使用get\\u post\\u meta从tweet()函数内部获取相同的meta值。调用tweet()函数时,需要删除参数(括号之间的内容)。像这样:

$content .= "<div class=\'post\'><p>".tweet()."</p></div>";
最后——虽然这只是一个建议,严格来说,您的代码并没有什么问题——但我不知道preg替换的目的是什么。如果您试图链接到原始tweet,可以从twitter提要中直接提取URI。此外,您还可以使用WordPress的handy使推文中的链接可点击make_clickable() 作用

这里的问题不在于get\\u post\\u meta,而在于PHP。没有失礼,但这将极大地帮助你复习基础知识,以便更好地理解你正在编写的代码,以及人们给你的答案。

结束

相关推荐

获取在Functions.php中设置的变量,并在我的Custom Post模板中回显它们

在我的函数中设置了以下函数。php文件,以允许我的自定义帖子类型“Slideshow”工作。add_action( \'the_post\', \'paginate_slide\' ); function paginate_slide( $post ) { global $pages, $multipage, $numpages; if( is_single() && get_post_type() == \'lom_s