Заставить галерею WordPress использовать ссылку на медиафайл вместо ссылки на вложение

Есть ли фильтр или хук, чтобы заставить галереи WordPress использовать ссылку на медиафайл вместо ссылки на вложение. Я не могу доверять своему клиенту вручную переключать настройки при создании галереи. http://cl.ly/image/2g1L1G2c2222

Возникает еще одна проблема, почему медиафайл не является типом по умолчанию.


person Darren Cooney    schedule 14.02.2014    source источник
comment
вы можете переопределить свой собственный шорткод галереи   -  person Obmerk Kronen    schedule 15.02.2014


Ответы (2)


Вы можете изменить шорткод галереи по умолчанию.

remove_shortcode('gallery', 'gallery_shortcode'); // removes the original shortcode
    add_shortcode('gallery', 'my_awesome_gallery_shortcode'); // add your own shortcode

    function my_awesome_gallery_shortcode($attr) {
    $output = 'Codex is your friend' ;
    return $output;
}

Внутри пользовательской функции вы можете установить все, что хотите. Посмотрите на оригинал шорткод галереи .

Другой способ - фактически отфильтровать атрибуты (если вы перейдете по приведенной выше ссылке, вы увидите хук фильтра)

add_shortcode( 'gallery', 'my_gallery_shortcode' );

function my_gallery_shortcode( $atts )
{
    $atts['link'] = 'file';
    return gallery_shortcode( $atts );
}
person Obmerk Kronen    schedule 15.02.2014
comment
Спасибо! Я искал ответ не в том месте. Я пытался изменить ссылку через фильтр wp_get_attachment_link. еще раз спасибо! - person Darren Cooney; 16.02.2014

Ответ Obmerk Kronen очень аккуратный и работает в большинстве ситуаций. Однако недавно я столкнулся с проблемой на одном из сайтов моего клиента, которую нельзя было решить таким образом. Я на самом деле не знаю, почему. Я полагаю, это было из-за другого плагина галереи, который подделывал тот же шорткод.

Итак, я нашел другое решение, не такое аккуратное, но работающее. Вот, может кому пригодится:

add_filter('the_content','galleries_attachments_to_media_links');
function galleries_attachments_to_media_links( $content ) {
/**
 * Overrides gallery shortcode settings and forces media file loading, if gallery set to attachment link
 */
if(strpos($content,'[gallery') !== FALSE) {
    $content = str_replace('[gallery','[gallery link="file"',$content);
    return $content;
}
else return $content;
}

Похоже, даже если галерея уже настроена на медиафайл, это не проблема, и WordPress правильно выполняет шорткод.

person ToNo    schedule 18.03.2021