Вопрос

Я задавал этот вопрос ранее, что решило мою проблему, но в дальнейшем у меня все еще проблемы с ним,

У меня есть функция для отображения твитов пользователя, который получает из пользовательского поля, пользовательский код поля работает идеально, потому что, когда я echo the get_post_meta В моем Single.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');
Это было полезно?

Решение

Так много проблем здесь ...

Во -первых, я не уверен, что делает эта линия:

add_action('admin_menu', 'tweet_fetch1');

Если у вас на самом деле нет функции, называемой tweet_fetch1, которая работает при загрузке администратора, вам следует удалить это добавление. И если у вас есть такая функция, почему ваше добавление в этом месте? Первым шагом к тому, чтобы избежать проблем, является чистый, читаемый, прокомментированный код. Группы функционируют и логически зацепляют их.

Во-вторых, в обеих ваших функциях вы пытаетесь ссылаться на $ post-> id, где нет объекта Post. Обычно вы можете сделать его доступным, глобализируя его.

global $post;

В -третьих, ваша функция, называемая «твитом», не принимает аргументов, но когда вы называете ее из своей функции append_the_content1 (), вы пытаетесь передать его значение Meta для dbt_username.

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

Это неверно ... и ненужно, так как вы затем получаете то же значение Meta (снова) из функции твита () с использованием get_post_meta. Вам нужно удалить аргумент (материал между скобками), когда вы называете твит () Funciton. Вот так:

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

Наконец-хотя это просто предложение, и не что-то не так с вашим кодом-я не знаю, для чего предназначена вся эта замена Preg. Если вы пытаетесь ссылаться на оригинальный твит, вы можете вытащить URI прямо из канала в Твиттере. Кроме того, вы можете сделать ссылки внутри твитов, кликабельных с помощью WordPress ' make_clickable () функция

Ваша проблема здесь не с GET_POST_META-это с PHP. Никакого неуважения, но это очень поможет вам освежить основы, чтобы вы могли лучше понять код, который вы пишете, и ответы, которые вам дают люди.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top