2016-07-19 9 views
0

RSSフィードからWordPressの投稿にコンテンツを表示しようとしています。フィードの内容が投稿から投稿に変わるように、RSS URLをWordpress投稿に入力できるようにしたいと思います。PHP関数内でWPメタ値を使用する

私はこのコードを使用して所望の出力を作成し、直接

<?php 
    $rss = new DOMDocument(); 
    $rss->load('ENTER RSS URL HERE'); 
    $feed = array(); 
    foreach ($rss->getElementsByTagName('item') as $node) { 
     $item = array ( 
      'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 
      'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue, 
      'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, 
      'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 
      ); 
     array_push($feed, $item); 
    } 
    $limit = 6; 
    for($x=0;$x<$limit;$x++) { 
     $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); 
     $link = $feed[$x]['link']; 
     $description = $feed[$x]['desc']; 
     $date = date('l F d, Y', strtotime($feed[$x]['date'])); 
       echo '<div class="product-item">'; 
     echo '<p>'.$description.'</p>'; 
      echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong><br />'; 
       echo '</div>'; 
    } 
?> 

を「HERE RSSのURLを入力してください」と言うと私はまた、出力URLはポストメタ値として入力することができますRSSのURLを入力することによってすることができます

<?php echo get_post_meta($post->ID, 'RSS', true); ?> 

RSS URLを動的に変更できるように2つを組み合わせる方法がわかりません。どんな助けでも大歓迎です。

答えて

0

<?php 
global $post; 
$url = ((filter_var(get_post_meta($post->ID, 'RSS', true), FILTER_VALIDATE_URL)) ? get_post_meta($post->ID, 'RSS', true) : 'fallback url'); 
$rss = new DOMDocument(); 
$rss->load($url); 
$feed = array(); 
foreach ($rss->getElementsByTagName('item') as $node) 
{ 
    $item = array(
     'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 
     'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue, 
     'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, 
     'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 
    ); 
    array_push($feed, $item); 
} 
$limit = 6; 
for ($x = 0; $x < $limit; $x++) 
{ 
    $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); 
    $link = $feed[$x]['link']; 
    $description = $feed[$x]['desc']; 
    $date = date('l F d, Y', strtotime($feed[$x]['date'])); 
    echo '<div class="product-item">'; 
    echo '<p>' . $description . '</p>'; 
    echo '<p><strong><a href="' . $link . '" title="' . $title . '">' . $title . '</a></strong><br />'; 
    echo '</div>'; 
} 
?> 
+0

ありがとうございました!フォールバックURLだけで作業していたので、FILTER_VALIDATE_EMAILを削除しました(私が何かに置き換えようとしていたかどうかはわかりません)。 – jkendall

0

RSS-URLはポストメタデータ内常にある場合、あなたは単にそれを使用できます。

$rss->load(get_post_meta($post->ID, 'RSS', true)); 

または私はあなたの質問に間違って何かを得るのですか?

+0

ありがとうございましたキリスト教 - それは私が達成したいことですが、うまくいかないようです...私は何か他のものを逃していますか?私はこれをDreamweaverに入力すると、この行に構文エラーがあると言います。 Wordpressで試してみるとポストループが壊れ、内容は表示されません.... – jkendall

+0

@jkendall申し訳ありませんが、タイプミスがありました。私は誤ってセミコロンを多く入力しました。今すぐ修正しました。 – Christian

0

はここで完璧に感謝を動作しているようだ私が使用している最終的なコードで試すことができます!

<?php 
global $post; 
$url = ((filter_var(get_post_meta($post->ID, 'RSS', true))) ? get_post_meta($post->ID, 'RSS', true) : 'ENTER FALL BACK URL HERE'); 
$rss = new DOMDocument(); 
$rss->load($url); 
$feed = array(); 
foreach ($rss->getElementsByTagName('item') as $node) 
{ 
    $item = array(
     'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 
     'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue, 
     'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, 
     'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 
    ); 
    array_push($feed, $item); 
} 
$limit = 6; 
for ($x = 0; $x < $limit; $x++) 
{ 
    $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); 
    $link = $feed[$x]['link']; 
    $description = $feed[$x]['desc']; 
    $date = date('l F d, Y', strtotime($feed[$x]['date'])); 
    echo '<div class="product-item">'; 
    echo '<p>' . $description . '</p>'; 
    echo '<p><strong><a href="' . $link . '" title="' . $title . '">' . $title . '</a></strong><br />'; 
    echo '</div>'; 
} 
?> 
関連する問題