• 解決済 aoneissei

    (@aoneissei)


    こんにちは。

    現在「sight」というテーマを利用しています。
    とても綺麗で使いやすいテーマです。
    (ダウンロードはコチラです→http://wpshower.com/themes/sight/)

    上記アドレスを閲覧していただくとわかるのですが、このテーマにはトップページにスライドショーの機能が組み込まれていて、管理画面の「投稿」から投稿するする際に「show in slideshow」というチェックボックス(デフォルトでは投稿編集画面の右下)にチェックを入れておけばその投稿の抜粋文とアイキャッチ画像がトップページのスライドに反映されるようになっています。

    ただ、何故か「固定ページ」の編集画面にはこのチェックボックスがなく、固定ページの内容をスライドに反映することができません。

    マガジンタイプのテーマにはこのように「投稿」記事がインデックス代わりにスライドなどで出てくるテーマをよく見かけますが、「固定ページ」をスライドに反映することはもともとWPが持っている仕組み的に難しいのでしょうか。
    このテーマ内にあるslideshow.phpの記述は以下の通りです。

    <?php
        $args = array(
            'meta_key' => 'sgt_slide',
            'meta_value' => 'on',
            'numberposts' => -1,
            );
        $slides = get_posts($args);
    
        if ( !empty($slides) ) : $exl_posts = Array(); ?>
    
            <div class="slideshow"><div id="slideshow">
    
            <?php foreach( $slides as $post ) :
                setup_postdata($post);
                global $exl_posts;
                $exl_posts[] = $post->ID;
            ?>
            <div class="slide clear">
                <div class="post">
                    <?php if ( has_post_thumbnail() ) echo '<a href="'.get_permalink().'">'.get_the_post_thumbnail($post->ID, 'slide',
                        array(
                            'alt'	=> trim(strip_tags( $post->post_title )),
                            'title'	=> trim(strip_tags( $post->post_title )),
                        )).'</a>'; ?>
                    <div class="post-category"><?php the_category(' / '); ?></div>
                    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    
                    <div class="post-meta">by <span class="post-author"><a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>" title="Posts by <?php the_author(); ?>"><?php the_author(); ?></a></span> on <span
                            class="post-date"><?php the_time( get_option( 'date_format' ) ) ?></span> • <?php comments_popup_link('No Comments', '1 Comment', '% Comments', '', 'Comments Closed' ); ?> <?php edit_post_link( __( 'Edit entry'), '• '); ?></div>
                    <div class="post-content"><?php if ( has_post_thumbnail() && function_exists('smart_excerpt') ) smart_excerpt(get_the_excerpt(), 50); else smart_excerpt(get_the_excerpt(), 150); ?></div>
                </div>
            </div>
            <?php endforeach; ?>
    
            </div>
    
                <a href="javascript: void(0);" id="larr"></a>
                <a href="javascript: void(0);" id="rarr"></a>
            </div>
        <?php endif; ?>

    上記記述の中でいったいどの部分が「投稿」の内容を引っ張って来いという記述なのでしょうか。またそれを「固定ページ」の内容を反映させるように変えることはできるのでしょうか。

    何処かをカスタマイズすれば固定ページの内容もトップページのスライドに反映できるのではないかと勝手に思っているのですが、このテーマのフォーラムを探しても何処にもそれがのっていません。どなたかお判りになる方がいらっしゃいましたら是非御教授ください。よろしくお願いいたします。

15件の返信を表示中 - 1 - 15件目 (全22件中)
  • functions.php の中に設定箇所があります。

    トピック投稿者 aoneissei

    (@aoneissei)

    orangethymeさん

    いつもご返信ありがとうございます。
    下記がテーマ内にあるfunctions.phpの記述で、
    おそらく下記の部分がスライドショーに対しての命令だと思います。いったい
    どの部分を編集すればよいのでしょうか。
    「投稿」の内容をスライドショーに反映するだけでなく、「固定ページ」の内容も
    スライドーショーに反映したいのが目的なんです。
    その上「固定ページ」編集画面内に投稿にはついている「show in slideshow」というチェックボックスをつけたいと思っています。
    是非御教授ください。よろしくお願いします。

    /*** Slideshow ***/
    
    $prefix = 'sgt_';
    
    $meta_box = array(
        'id' => 'slide',
        'title' => 'Slideshow Options',
        'page' => 'post',
        'context' => 'side',
        'priority' => 'low',
        'fields' => array(
            array(
                'name' => 'Show in slideshow',
                'id' => $prefix . 'slide',
                'type' => 'checkbox'
            )
        )
    );
    add_action('admin_menu', 'sight_add_box');

    'page' => 'post',
    ここで投稿を指定していると思います。page に変えれば固定ページにチェックボックスが付きますが、投稿・固定ページ両方に付けるのに何と書けばよいか、私にはわかりません…が、
    カスタムフィールドでキー:sgt_slideに値:on の投稿をスライドで表示しているので、固定ページに同様にチェックボックスをつけ(more fields なら同じように右側に付けられます)、slideshow.php の冒頭を

    <?php
        $args = array(
            'meta_key' => 'sgt_slide',
            'meta_value' => 'on',
            'post_type' => 'any',
            'numberposts' => -1,
            );

    のようにすれば、固定ページも表示できます。

    トピック投稿者 aoneissei

    (@aoneissei)

    orangethymeさん

    ありがとうございます。
    今からすぐに試してみます。

    また戻ってまいります。

    トピック投稿者 aoneissei

    (@aoneissei)

    orangethymeさん

    すいません、

    固定ページに同様にチェックボックスをつけ(more fields なら同じように右側に付けられます)、

    これは具体的にどういうことでしょうか。すいません知識がないもので。
    'page' => 'post',
    のままの状態で、固定ページにも同様にチェックボックスをつけ、slideshow.phpの冒頭を

    <?php
        $args = array(
            'meta_key' => 'sgt_slide',
            'meta_value' => 'on',
            'post_type' => 'any',
            'numberposts' => -1,
            );

    にする事で、「投稿」も「固定ページ」もスライドショーに反映できるという理解であってますか?

    お忙しい中スイマセンが御教授願います。

    カスタムフィールドでチェックボックスを付けて、キーがsgt_slide、チェックを入れると値がon になるようにするということです。more fields はカスタムフィールドプラグインの名前です。

    トピック投稿者 aoneissei

    (@aoneissei)

    orangethymeさん

    ご返信ありがとうございます。
    まずはやってみます。

    トピック投稿者 aoneissei

    (@aoneissei)

    orangethymeさん

    時間が経ちましたが色々やってみたんですがどうしても投稿・固定ページの両方にスライドを反映する事ができませんでした。
    more fieldsを使って固定ページにスライド用のチェックボックスはつけられたのですが、
    チェックボックスにチェックを入れてアイキャッチ画像を入れてもスライドには反映されませんでした。どーすれば両方に反映できるのでしょうか。

    やはり下記記述の

    /*** Slideshow ***/
    
    $prefix = 'sgt_';
    
    $meta_box = array(
        'id' => 'slide',
        'title' => 'Slideshow Options',
        'page' => 'post',
        'context' => 'side',
        'priority' => 'low',
        'fields' => array(
            array(
                'name' => 'Show in slideshow',
                'id' => $prefix . 'slide',
                'type' => 'checkbox'
            )
        )
    );
    add_action('admin_menu', 'sight_add_box');

    'page' => 'post',の部分に投稿も固定ページもと書かなければ反映されないのでしょうか。書き方も調べ方もわからず。。。もしお力添えいただければ御教授願います。

    チェックをつけた時の値が on になっていて、slideshow.php の冒頭が

    <?php
        $args = array(
            'meta_key' => 'sgt_slide',
            'meta_value' => 'on',
            'post_type' => 'any',
            'numberposts' => -1,
            );
        $slides = get_posts($args);

    になっていれば反映されます。

    今更ですが、functions.php に下記を足せば、固定ページにも同じチェックボックスを表示できます。

    $meta_box = array(
        'id' => 'slide',
        'title' => 'Slideshow Options',
        'context' => 'side',
        'page' => 'page',
        'priority' => 'low',
        'fields' => array(
            array(
                'name' => 'Show in slideshow',
                'id' => $prefix . 'slide',
                'type' => 'checkbox'
            )
        )
    );
    add_action('admin_menu', 'sight_add_box');

    トピック投稿者 aoneissei

    (@aoneissei)

    orangethymeさん

    下記のようなことですよね?ならないんだよな。。。。

    /*** Slideshow ***/
    
    $prefix = 'sgt_';
    
    $meta_box = array(
        'id' => 'slide',
        'title' => 'Slideshow Options',
        'page' => 'post',
        'context' => 'side',
        'priority' => 'low',
        'fields' => array(
            array(
                'name' => 'Show in slideshow',
                'id' => $prefix . 'slide',
                'type' => 'checkbox'
            )
        )
    );
    add_action('admin_menu', 'sight_add_box');
    
    $meta_box = array(
        'id' => 'slide',
        'title' => 'Slideshow Options',
        'page' => 'page',
        'context' => 'side',
        'priority' => 'low',
        'fields' => array(
            array(
                'name' => 'Show in slideshow',
                'id' => $prefix . 'slide',
                'type' => 'checkbox'
            )
        )
    );
    add_action('admin_menu', 'sight_add_box');
    トピック投稿者 aoneissei

    (@aoneissei)

    orangethymeさん

    何度も申し訳ありません。アドバイスいただいたように下記のような記述をfunctions.phpに記述してもどうしても下に追加した記述だけが読み込まれてしまいます。
    どうしてもうまくいきません。
    何か思い当たるところございましたらご教授ください。よろしくお願いします。

    /*** Slideshow ***/
    
    $prefix = 'sgt_';
    
    $meta_box = array(
        'id' => 'slide',
        'title' => 'Slideshow Options',
        'page' => 'post',
        'context' => 'side',
        'priority' => 'low',
        'fields' => array(
            array(
                'name' => 'Show in slideshow',
                'id' => $prefix . 'slide',
                'type' => 'checkbox'
            )
        )
    );
    add_action('admin_menu', 'sight_add_box');
    
    $meta_box = array(
        'id' => 'slide',
        'title' => 'Slideshow Options',
        'page' => 'page',
        'context' => 'side',
        'priority' => 'low',
        'fields' => array(
            array(
                'name' => 'Show in slideshow',
                'id' => $prefix . 'slide',
                'type' => 'checkbox'
            )
        )
    );
    add_action('admin_menu', 'sight_add_box');

    あ、そうですね。冷静に考えたら、そこだけ増やしてもダメですね…

    more fields のチェックボックスはチェックをつけた時の値が 1 になるので、投稿と固定ページと両方にmore fields のチェックボックスを表示させて、slideshow.php で呼び出す value を 1 にすればOK。

    functions.php は
    'page' => 'post',
    の行を削除すればデフォルトのボックスは表示されなくなります。

    トピック投稿者 aoneissei

    (@aoneissei)

    orangethymeさん

    何度も何度もホントすいません。
    ありがとうございます。

    今から早速やってみたいと思います。
    ありがとうございます。

    トピック投稿者 aoneissei

    (@aoneissei)

    orangethymeさん

    できました。涙本当にありがとうございます。

    最後1つ質問があります。是非お願いできないでしょうか。
    このスライドなんですが、出現したスライドをクリックすると出力元の投稿記事や固定ページに自動的にジャンプして閲覧できる仕組みになっていますが、これを例えばアーカイブのページやまたどこか他のサイトに飛ばしたりとび先を指定するような事は可能だと思われますか。

    「画像をクリックしたらここに飛んでね」という命令が何処に書かれているのかわかりません。
    具体的に言うと3枚のスライド中一枚だけは他社サイトの記事に飛ばしたいという意向なんです。

    もしご教授いただければ幸いです。
    よろしくお願いします。

    カスタムフィールドでリンク先の入力欄を追加し、slideshow.php でリンク先がパーマリンクとなっているところに当てれば良いと思いますが。

15件の返信を表示中 - 1 - 15件目 (全22件中)

トピック「スライドーショーの仕組み」には新たに返信することはできません。