【WordPress】URLやタイトルなどから記事情報を取得する方法

【WordPress】URLやタイトルなどから記事情報を取得する方法

エリカ

エリカ

使用例

上記の方法を利用して、本文中に設置するサイト内リンクを、より豪華にするショートコードを作成してみました。

/**
 * サイト内LINKを豪華にしちゃいます♡
 */
function rich_link ($atts) {

    $link = '';
    $post_id = 0;
    $output = '';

    extract(shortcode_atts(array(
        'link' => ''
    ), $atts));

    if (preg_match('/^\d+$/', $link)) {
        // ID
        $post_id = $link;
    } else if (preg_match('/^https?:/', $link)) {
        // URL
        $post_id = url_to_postid($link);
    } else {
        // タイトル or スラッグ
        $post = get_page_by_title(trim($link), OBJECT, 'post');
        if ( ! empty($post->ID)) {
            $post_id = $post->ID;
        } else {
            $post = get_page_by_path(trim($link), OBJECT, 'post');
            if ( ! empty($post->ID)) {
                $post_id = $post->ID;
            }            
        }
    }
    if ($post_id) {
        if (empty($post)) {
            $post = get_post( $post_id );
        }
        if ($post) {
            $output.= '<a href="' . get_the_permalink( $post->ID ) . '">';
            $output.= '<div>';
            $output.= get_the_post_thumbnail($post->ID);
            $output.= get_the_title($post->ID);
            $output.= '</div>';
            $output.= '</a>';
        }
    }
    return $output;
}
add_shortcode('rich_link', 'rich_link');

$outputの部分は適宜調整する必要がありますが、

みたいなショートコードを本文中に記述すると、サムネイルとタイトルのリンクが表示されます。

まとめ

便利な関数がたくさんありますね。
特に外部のサービスと連携するとき、URLしかやり取りできないんだけどといった場合に、こういうことを知っておくとより見積もりがしやすいのではないかなと思いました。

それでは。

 

【WordPressのメディアサイトをカスタマイズ】

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

ディレクターのエリカです。趣味は美術鑑賞で、絵画や展示などたくさんの作品を眺めるのが好きです。得意料理は「鍋」です。よろしくお願いします。

このメンバーの記事をもっと読む