0

Wordpress を CMS として使用しているサイトがいくつかあります。どちらも、次のコードを使用してカスタム レンダリングされたギャラリーを持っています。

<?php
$the_cat = get_the_category();
$category_name = $the_cat[0]->cat_name;
$category_description = $the_cat[0]->category_description;
$category_link = get_category_link( $the_cat[0]->cat_ID );
$url = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );

echo '<div class="titleblock-2"><p>';
echo customTitle(50);
echo '</p></div>';

$attachments = get_posts(array
    (
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_status' => 'published',
    'post_parent' => $post->ID,
    'orderby' => 'menu_order',
    'order' => ''
    )
);

if ( $attachments ) {
    echo '<div id="singlegallery">';
    foreach ( $attachments as $attachment ) {
        $attachment_page = get_attachment_link( $attachment->ID ); 
        echo '<div class="big-thumb"><div class="gallery-icon"><a href="';
        echo wp_get_attachment_url( $attachment->ID );
        echo '">';

        $myimage = preg_replace( '/(width|height)=\"\d*\"\s/', "", wp_get_attachment_image($attachment->ID, medium) ); echo $myimage; 

        echo '</a></div></div>';
        }
    echo '</div>';
    } 

?>

私の問題は、Wordpress 3.5 が、以前に投稿にアップロードされた画像を以前のように処理していないように見えることです。コードはギャラリーを生成しますが、WP 管理インターフェイス内で画像を並べ替えることができません。

添付ファイルが以前のように機能しなくなり、次のようなコードを使用して画像を呼び出す別の方法があることを示唆しているのを見てきました。

$post_content = $post->post_content;
preg_match('/\[gallery.*ids=.(.*).\]/', $post_content, $ids);
$array_id = explode(",", $ids[1]);

誰かがこれをどのように適用できるかを説明できますか? すべてのギャラリーをゼロから再作成するという「解決策」は、ここでは選択できません。

4

1 に答える 1

0

ここで述べたように、if ( $attachments )句を展開するだけです。

<?php
$the_cat = get_the_category();
$category_name = $the_cat[0]->cat_name;
$category_description = $the_cat[0]->category_description;
$category_link = get_category_link( $the_cat[0]->cat_ID );
$url = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );

echo '<div class="titleblock-2"><p>';
echo customTitle(50);
echo '</p></div>';

$attachments = get_posts(array
    (
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_status' => 'published',
    'post_parent' => $post->ID,
    'orderby' => 'menu_order',
    'order' => ''
    )
);

if ( $attachments ) {
    echo '<div id="singlegallery">';
    foreach ( $attachments as $attachment ) {
        $attachment_page = get_attachment_link( $attachment->ID ); 
        echo '<div class="big-thumb"><div class="gallery-icon"><a href="';
        echo wp_get_attachment_url( $attachment->ID );
        echo '">';

        $myimage = preg_replace( '/(width|height)=\"\d*\"\s/', "", wp_get_attachment_image($attachment->ID, medium) ); echo $myimage; 

        echo '</a></div></div>';
        }
    echo '</div>';
} else {   
    $post_content = $post->post_content;
    preg_match('/\[gallery.*ids=.(.*).\]/', $post_content, $ids);
    $attachment_ids = explode(",", $ids[1]);
    foreach ($attachment_ids as $attachment_id) {

        // here you can use your old code for printing images, but use "$attachment_id" instead of "$attachment->ID"
    }   
} 

?>
于 2013-01-16T06:33:48.257 に答える