web-dev-qa-db-ja.com

RSSで投稿IDを表示

RSSに投稿IDを表示する方法

この私のコード:

$rss = new DOMDocument();
$rss->load('https://www.ciusan.com/feed');
    $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 = 5;
    echo '<div>';
    echo '<ul class="soo-latest">';
    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 '<li>&raquo; <a target="_blank" class="soo-info" href="'.$link.'">'.$title.'</a>';
        echo '<small class="help">Posted on '.$date.'</small></li>';
//      echo '<p>'.$description.'</p>';
    }
    echo '</ul>';
    echo '</div>';

この私のパーマリンク:

/%category%/%post_id%/%postname%/

私はwp_get_shortlink(get_the_ID());を以下のために使いたいです。

echo '<li>&raquo; <a target="_blank" class="soo-info" href="'.$link.'">'.$title.'</a>';

だから長いリンクではなく短く表示...

2

あなたはフックを通してあなたのフィードにカスタムタグとしてIDを追加することができます。しかし、これを格納するためのrss/atom標準には有効なタグはありません。次の例のように、投稿のIDを取得するためにguidタグを分割する必要があると思います。

フィード内のガイド:

<guid isPermaLink="false">https://www.ciusan.com/?p=3566</guid>

IDを分割してください。

$id = explode( '=', $guid );

Var $guidはあなたのforeachループの中で強化するべきです、それでそれはそれぞれのguidをそれぞれのアイテムに格納します。 $idは、すべての文字列が=という文字列で分割された配列を取得します。これもあなたの投稿IDです。

2
bueltge