0

私はWordpress Webサイトとそれにインストールしたテーマを実行しています。ホームページに表示されるnivoSliderが付属しています。現在、WP ダッシュボードにログインして [テーマ オプション] パネルに移動することで、ホームページに表示するスライダーを選択できます。そこから、ホームページに表示するスライダーをドロップダウンから選択できます (さらにスライダーを作成すると、リストが表示され続けます)。テーマ オプション パネルの「Slider」セクションをエコーするコードは次のとおりです。

//------------------------------------------------------------------------------
// SLIDER
//------------------------------------------------------------------------------

        $options[] = array( "name" => __('SLIDER','gxg_textdomain'),
                                                "type" => "heading",
                                                "img" => "/includes/admin/images/s.png");

        $options[] = array( "name" => __('Set up your slider','gxg_textdomain'),
        "type" => "info");


        $options[] = array( "name" => __('Show Slider on Homepage','gxg_textdomain'),
                                                "id" => $shortname."_slider",
                                                "std" => "1",
                                                "type" => "checkbox");


        $options[] = array( "name" => __('Select a Slider','gxg_textdomain'),
                                                "desc" => __('After you have created a slider, you can select it here.','gxg_textdomain'),
                                                "id" => $shortname."_sliderimages",
                                                "type" => "select",
                                                "options" => $options_slides);

これは、ホームページのスライダーをエコーする header.php ファイル内のコードです。

<?php get_template_part( 'slider' ); ?>

現在、上記のコードを任意のテンプレート ファイル内に配置して特定のテンプレートにスライダーを表示すると、表示される唯一のスライダーは、テーマ オプション パネルから選択されたものです。これは、slider.php ファイル内にあるコードです。

<div id="slider" class="nivoSlider">



        <?php

                if ( of_get_option('gg_slider') && of_get_option('gg_sliderimages') ) {



                        global $wpdb, $post;



                        $slider = of_get_option('gg_sliderimages');

                        $meta = get_post_meta( $slider, 'gxg_slider_images', false );



                        if ( !is_array( $meta ) )

                                $meta = ( array ) $meta;



                        if ( !empty( $meta ) ) {

                                $meta = implode( ',', $meta );



                                $images = $wpdb->get_col( "

                                        SELECT ID FROM $wpdb->posts

                                        WHERE post_type = 'attachment'

                                        AND ID IN ( $meta )

                                        ORDER BY menu_order ASC

                                    " );



                                foreach ( $images as $att ) {

                                        // Get image's source

                                        $src = wp_get_attachment_image_src( $att, 'full' );

                                        $src = $src[0];



                                        $caption = get_post_meta( $att , '_slidercaption', true);

                                        $caption = htmlspecialchars($caption, ENT_QUOTES);



                                        $cf = get_post_meta( $att , '_sliderurl', true);



                                        // Show image

                                        if ($cf) {    

                                        echo "<a href='$cf'><img src='{$src}' alt='' title='$caption' /></a>";

                                        } else {    

                                        echo "<img src='{$src}' alt='' title='$caption' />";

                                        }



                                }

                        }        

                }        

        ?>

</div><!-- .slider--> 

私が基本的にやりたいことは、スライダーの ID またはスライダーのスラッグ (slider.php ファイル内) を直接入力できるように、slider.php ファイルを変更して、echo になるようにすることです。テーマ オプション パネルで選択したスライダーに関係なく表示されます。私が理解していることから、これはテーマ オプション パネルでの選択に基づいてスライダーを選択しているコードである可能性があります。

$slider = of_get_option('gg_sliderimages');

上記のコードの ' ' の代わりに、of_get_option('gg_sliderimages')表示したいスライダーの ID/スラッグを入力する方法はないかと考えていました。

解決を楽しみにしています。ありがとうございました。

4

1 に答える 1

0

私の理解が正しければ、コードの 2 番目の部分をカスタム ビュー (single.php の例) にコピーし、ハードタイプしたであろうカスタム ポストでカスタム スライダーをエコーし​​ますか?

コードをコピーしたら、テンプレート オプションからパラメーターを受け取る最初の条件を削除する必要があります。そうすれば、メニューで何を選択したかに関係なく、常にスライダーが表示されます。

次に、次のコード行をコメントアウトします。

$slider = of_get_option('gg_sliderimages');

$slider 変数には、カスタム テーマ関数 of_get_option() によって転送された投稿 ID の配列が含まれているため、これを実行します。その後、必要に応じて独自の配列、カスタム投稿の配列を定義する必要があります。例:

$slider[] = array('123', '256', '455');

また、グローバル変数を再定義すると、たとえば single.php ファイルが query_posts(); によって以前に定義された $post を期待している場合、コードがさらに壊れる可能性があることに注意してください。その場合、foreach ループの後にクエリをリセットする必要があります。

于 2013-04-11T23:24:12.660 に答える