get_post_meta () проблема снова
-
16-10-2019 - |
Вопрос
Я задавал этот вопрос ранее, что решило мою проблему, но в дальнейшем у меня все еще проблемы с ним,
У меня есть функция для отображения твитов пользователя, который получает из пользовательского поля, пользовательский код поля работает идеально, потому что, когда я 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. Никакого неуважения, но это очень поможет вам освежить основы, чтобы вы могли лучше понять код, который вы пишете, и ответы, которые вам дают люди.