web-dev-qa-db-ja.com

添付ファイルのカスタムリンクを取得する

ギャラリー内の画像をカスタムURLにリンクしたいと思いました。

追加のフィールドを追加してこの方法で できることを知っています

私は このチケット をTracで見つけました、それはカスタムリンクを受け入れるために "リンクURL"フィールドを修正します。私はそれがどのように機能するのが好きで、私はその機能を作りたいです。

問題は、データにアクセスする方法がわからないようです。ループする配列を作成するのにget_childrenを使っています。リンクURLは結果に含まれていません。

Get_attachment_linkを試してみました - 問題は、フィールドからそれを引っ張るだけではなく、関数がリンク自体を生成することです。

何か案は?ありがとうございます。

3
Jonathan Wold

一番下にリンクしているTracチケットには、それを機能させるための解決策があります。

function _save_attachment_url($post, $attachment) {
    if ( isset($attachment['url']) ) 
        update_post_meta( $post['ID'], '_wp_attachment_url', esc_url_raw($attachment['url']) ); 
    return $post;
}
add_filter('attachment_fields_to_save', '_save_attachment_url', 10, 2);

function _replace_attachment_url($form_fields, $post) {
    if ( isset($form_fields['url']['html']) ) {
        $url = get_post_meta( $post->ID, '_wp_attachment_url', true );
        if ( ! empty($url) )
            $form_fields['url']['html'] = preg_replace( "/value='.*?'/", "value='$url'", $form_fields['url']['html'] );
    }
    return $form_fields;
}
add_filter('attachment_fields_to_edit', '_replace_attachment_url', 10, 2);

それで、このコードの後に​​あなたは "リンクURL"フィールドにあなたのカスタムリンクを追加することができるでしょう。

それを取得するには、添付ファイルIDが必要です。それを使用して取得できます。

get_post_meta( $post->ID, '_wp_attachment_url', true );
4
Bainternet