ギャラリー内の画像をカスタムURLにリンクしたいと思いました。
追加のフィールドを追加してこの方法で できることを知っています
私は このチケット をTracで見つけました、それはカスタムリンクを受け入れるために "リンクURL"フィールドを修正します。私はそれがどのように機能するのが好きで、私はその機能を作りたいです。
問題は、データにアクセスする方法がわからないようです。ループする配列を作成するのにget_childrenを使っています。リンクURLは結果に含まれていません。
Get_attachment_linkを試してみました - 問題は、フィールドからそれを引っ張るだけではなく、関数がリンク自体を生成することです。
何か案は?ありがとうございます。
一番下にリンクしている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 );