Настраиваемые поля / значения отображаются не по порядку

Я использую плагин Types Wordpress для включения настраиваемых полей. Плагин позволяет изменять порядок изображений в редакторе страницы администратора. Вот мой код в моем single.php, чтобы отображать несколько изображений в настраиваемом поле и иметь ссылку на себя, чтобы также использовать Fancybox:

<?php   
    $mykey_values_img = get_post_custom_values('wpcf-image');
    if ($mykey_values_img != null) {
        foreach ( $mykey_values_img as $key => $value ) {
?>  
        <a href="<?php echo $value; ?>" class="fancybox" rel="gallery"><img src="<?php echo $value; ?>" /></a>

<?php
        } //foreach
    } //if
?>

Проблема:

Прямо сейчас этот код отлично работает с моей локальной копией, работающей на MAMP. Однако, когда я размещаю его на iPage, изображения не в порядке. Я не знаю, чем вызвано это несоответствие. Когда я использую шорткод из Types для отображения изображений вместо php выше, они в порядке, но у меня нет возможности использовать Fancybox. Мне также было интересно, есть ли лучший способ отобразить изображение из Wordpress, которое будет вставлять тег alt для изображения.


person Jonathon    schedule 01.06.2013    source источник


Ответы (2)


Я только что столкнулся с этой проблемой, и ваш первый ответ привел меня к более жесткому решению.

Я также использовал types_render_field (), но если вы включите «необработанный» параметр, вы можете избежать манипуляций со строкой.

$images_raw = types_render_field('image', array('raw'=>'true','separator'=>';'));
$images = explode(';', $images_raw);
foreach ($images as $link) {
     echo '<a href="' . $link . '" class="fancybox" rel="gallery">' . $link . '"></a>"';
}

Затем, если вы противны, вы можете получить идентификатор вложения из его SRC. Используя этот идентификатор, вы можете получить всю необходимую информацию об этом вложении, например подпись или что-то еще.

person leifparker    schedule 18.10.2013
comment
Это гораздо лучшее решение! Спасибо! - person Jonathon; 09.12.2013

Я придумал, как заставить его работать. Это не идеально, но работает.

Плагин Types поставляется с собственной функцией php для отображения настраиваемого поля с именем types_render_field. Он отображал мои изображения по порядку. Чтобы fancybox заработал, мне пришлось кое-как взломать строку. Вот код:

$images = ( types_render_field( "image", array( 'size' => 'full', 'alt' => get_the_title(), 'title' => get_the_title() ) ) );
$imgArray = explode(">", $images);

foreach ( $imgArray as $value ) {

    $pos1 = strpos($value, 'src="', 0)+5;
    $pos2 = strpos($value, '" ', $pos1);
    $link = substr($value, $pos1, $pos2 - $pos1);

    echo '<a href="'.$link.'" class="fancybox" rel="gallery">'.$value."></a>";
}
person Jonathon    schedule 02.06.2013