0

私は自分の Wordpress ポートフォリオ サイトに取り組んでおり、ポートフォリオ セクション用のカスタム投稿タイプを作成しました。ユーザーが私のポートフォリオ リンクをクリックすると、私のすべてのプロジェクトのギャラリーを表示する archive-portfolio.php に移動し、プロジェクトをクリックすると、関連付けられたプロジェクトを表示する single-portfolio.php に移動します。

すべてが適切に機能し、正しくスタイル設定されていますが、今回は、archive-portfolio.php にあるギャラリーを、single-portfolio.php にある各プロジェクトの下にも表示して、プロジェクト間のナビゲーションを容易にしたいと考えています。 . ギャラリーを表示したときに、ユーザーが参加していたプロジェクトへのリンクがギャラリーから除外されていれば、それも素晴らしいことです。

入れてみました

<?php wp_get_archives(); ?>

私のsingle-portfolio.phpテンプレートに入れましたが、思い通りに動作させることができなかったようです. カスタム投稿を取得できず、通常の投稿にリンクする月のリンクが表示されるだけでした。カスタム投稿と archive-portfolio.php にあるギャラリーを表示するためだけに必要です。(基本的には、single-portfolio.php のコンテンツの下の single-portfolio.php に archive-portfolio.php を挿入したいだけです)

これは私の最初の Wordpress サイトであり、すべて独学で学んでいます。私は自分で解決策を探してみましたが、私が見つけたものはすべて、私がすでに理解しているカスタム投稿タイプを作成する方法に関するものであるようです. 私はまだ自分のサイトをローカルで開発しているので、今すぐリンクすることはできませんが、私が何をしようとしているのかを知るために、Cargo で作成されたこのサイトをチェックしてください。

http://www.timboelaars.nl/help-ink

基本的に、サンプル サイトと同じ機能が必要です。プロジェクトの下にギャラリーを表示したいだけです。

いつものように、どんな助けでも大歓迎です!私はここ数日、この問題の解決策に苦労しており、それを回避してきましたが、サイトはほぼ完成しており、もはや回避することはできません. 私は本当にこれでいくつかの助けを使うことができます. 前もって感謝します!



(編集:以下のコメントで要求されたように、これが私のカスタムphpファイルの外観です)

アーカイブ-portfolio.php:

<!-- get_header -->
<?php get_header(); ?>
<!-- END get_header -->         

            <!-- #content -->
            <div id="content">

                <!-- #inner-content -->
                <div id="inner-content" class="wrap clearfix">

                    <!-- #main -->
                    <div id="main" class="twelvecol first clearfix" role="main">

                        <!-- have_posts -->
                        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

                        <!-- article -->
                        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?> role="article">

                            <!-- .entry-content -->
                            <section class="entry-content clearfix portfolio-gallery">

                                <!-- PORTFOLIO PROJECT LINK -->
                                <a href="<?php the_permalink() ?>">

                                    <!-- .portfolio-project -->
                                    <figure class="portfolio-project">

                                        <!-- custom header -->
                                        <header class="portfolio-project-title">
                                            <h1 class="bigtext">
                                                <div>
                                                    <?php
                                                        global $post;
                                                            $text = get_post_meta( $post->ID, 'juroto_custom_header', true );
                                                        echo $text;
                                                    ?>
                                                </div>
                                            </h1>                                   
                                        </header> <!-- END custom header -->                                    

                                        <!-- the_excerpt -->
                                        <figcaption class="portfolio-project-excerpt">
                                            <?php the_excerpt(); ?>
                                        </figcaption> <!-- END the_excerpt -->

                                        <!-- .black-filter -->
                                        <div class="black-filter"></div>
                                        <!-- END .black-filter -->

                                        <!-- featured image -->
                                        <?php
                                            if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
                                                the_post_thumbnail('thumbnail-bw', array('class'=>'bw-image-fade'));
                                                the_post_thumbnail('thumbnail');
                                            } 
                                        ?> <!-- END featured image -->

                                    </figure> <!-- END .portfolio-project -->

                                </a> <!-- END PORTFOLIO PROJECT LINK -->

                            </section> <!-- END .entry-content -->

                        </article> <!-- END article -->

                        <?php endwhile; ?> <!-- END have_posts -->

                        <?php else : ?>

                            <!-- #post-not-found -->
                            <article id="post-not-found" class="hentry clearfix">
                                <header class="article-header">
                                    <h1><?php _e("Oops, Post Not Found!", "bonestheme"); ?></h1>
                                </header>
                                <section class="entry-content">
                                    <p><?php _e("Uh Oh. Something is missing. Try double checking things.", "bonestheme"); ?></p>
                                </section>
                                <footer class="article-footer">
                                    <p><?php _e("This is the error message in the custom posty type archive template.", "bonestheme"); ?></p>
                                </footer>
                            </article>

                        <?php endif; ?> <!-- END #post-not-found -->

                    </div> <!-- END #main -->

                </div> <!-- END #inner-content -->

            </div> <!-- END #content -->

<!-- get_footer -->
<?php get_footer(); ?>
<!-- END get_footer -->

基本的に、各記事 (またはポートフォリオ プロジェクトと呼ぶ場合) を呼び出すループを、表示されているプロジェクトの下の single-portfolio.php に挿入したいと考えています。以下は、single-portfolio.php の外観です。

single-portfolio.php:

<!-- get_header -->
<?php get_header(); ?>
<!-- END get_header -->

            <!-- #content -->
            <div id="content">

                <!-- #inner-content -->
                <div id="inner-content" class="wrap clearfix">

                    <!-- #main -->
                    <div id="main" class="twelvecol first clearfix" role="main">

                        <!-- have_posts -->
                        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

                        <!-- article -->
                        <article id="post-<?php the_ID(); ?>" <?php post_class('clearfix'); ?> role="article">

                            <!-- .article-header -->
                            <header class="article-header">

                                <!-- .bigtext -->
                                <h1 class="bigtext">
                                    <div>
                                        <!-- the_title -->
                                        <?php the_title(); ?>
                                        <!-- END the_title -->
                                    </div>
                                </h1> <!-- END .bigtext -->

                            </header> <!-- END article header -->

                            <!-- .entry-content -->
                            <section class="entry-content clearfix">

                                <!-- GALLERY -->                                
                                <?php
                                    $jurotos_gallery = array( 
                                        // OPTIONS FOR THE GALLERY 
                                        'numberposts'       => -1, // Using -1 loads all posts or in this case images  
                                        'orderby'           => 'menu_order', // This ensures images are in the order set in the page media manager. To change the order of the images go to the post, click add media, click the drop down menu, select uploaded to this post, and just drag and drop the images in the order you want them to appear. When you're done just close the media manager, you don't need to update the post or insert image or anything.  
                                        'order'             => 'ASC', // ASC or DESC. ASC shows order as is in the media manager and DESC shows the reverse order (so the last image is first and so on)
                                        'post_mime_type'    => 'image', // Make sure it doesn't pull other resources, like videos  
                                        'post_parent'       => $post->ID, // *Important part - ensures the associated images are loaded 
                                        'post_status'       => null, 
                                        'post_type'         => 'attachment',
                                        'size'              => 'full',  // thumbnail, medium, large or full
                                        'include'           => '', // could choose to include something else
                                        'exclude'           => get_post_thumbnail_id( $post->ID ), // excludes thumbnail/featured image from being part of the gallery
                                    );  

                                    $images = get_children( $jurotos_gallery );
                                ?> 

                                <?php if($images){ ?>  
                                    <div class="flexslider">
                                        <ul class="slides">
                                            <?php foreach($images as $image){ ?>  
                                                <li>
                                                    <img src="<?php echo $image->guid; ?>" alt="<?php echo $image->post_title; ?>" title="<?php echo $image->post_title; ?>" />
                                                </li> 
                                            <?php } ?>
                                        </ul>  
                                    </div>  
                                <?php } ?>                              
                                <!-- END GALLERY -->  

                                <!-- the_content -->
                                <div id="accordion">
                                    <h3>Brief</h3>
                                        <div class="juroto-text-columns">
                                            <?php the_content(); ?>
                                        </div>
                                </div>
                                <!-- END the_content -->

                            </section> <!-- END .entry-content -->

                        </article> <!-- END article -->

                        <?php endwhile; ?> <!-- END have_posts -->          

                        <?php else : ?>

                            <!-- #post-not-found -->
                            <article id="post-not-found" class="hentry clearfix">
                                <header class="article-header">
                                    <h1><?php _e("Oops, Post Not Found!", "bonestheme"); ?></h1>
                                </header>
                                <section class="entry-content">
                                    <p><?php _e("Uh Oh. Something is missing. Try double checking things.", "bonestheme"); ?></p>
                                </section>
                                <footer class="article-footer">
                                    <p><?php _e("This is the error message in the single-portfolio.php template.", "bonestheme"); ?></p>
                                </footer>
                            </article>

                        <?php endif; ?> <!-- END #post-not-found -->

                    </div> <!-- END #main -->

                </div> <!-- END #inner-content -->

            </div> <!-- END #content -->

<!-- get_footer -->
<?php get_footer(); ?>
<!-- END get_footer -->





(編集: 以下は、すべてのカスタム ポートフォリオ投稿を表示する archive-portfolio.php からのループの抜粋です。これらの投稿は、投稿/プロジェクトのギャラリーのように配置およびスタイル設定されています。これが私が見せたいものです。 single-portfolio.php によって表示されている投稿/プロジェクト ページにいるときに、投稿/プロジェクトの下に移動します. 基本的に、すべてのカスタム投稿を収集し、単一ポートフォリオのギャラリーに配置するこのループが必要です.その特定の投稿/プロジェクトの情報を収集する single-portfolio.php のループの下に php がありますが、その方法がわかりません。次のようなコードはありますか?

<?php get_archive-portfolio(); ?> 

カスタム投稿のギャラリーを表示するために single-portfolio.php で使用できますか?)

ポートフォリオ ギャラリーを表示する archive-portfolio.php からのループ:

<!-- have_posts -->
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<!-- article -->
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?> role="article">

    <!-- .entry-content -->
    <section class="entry-content clearfix portfolio-gallery">

        <!-- PORTFOLIO PROJECT LINK -->
        <a href="<?php the_permalink() ?>">

            <!-- .portfolio-project -->
            <figure class="portfolio-project">

                <!-- custom header -->
                <header class="portfolio-project-title">
                    <h1 class="bigtext">
                        <div>
                            <?php
                                global $post;
                                    $text = get_post_meta( $post->ID, 'juroto_custom_header', true );
                                echo $text;
                            ?>
                        </div>
                    </h1>                                   
                </header> <!-- END custom header -->                                    

                <!-- the_excerpt -->
                <figcaption class="portfolio-project-excerpt">
                    <?php the_excerpt(); ?>
                </figcaption> <!-- END the_excerpt -->

                <!-- .black-filter -->
                <div class="black-filter"></div>
                <!-- END .black-filter -->

                <!-- featured image -->
                <?php
                    if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
                        the_post_thumbnail('thumbnail-bw', array('class'=>'bw-image-fade'));
                        the_post_thumbnail('thumbnail');
                    } 
                ?> <!-- END featured image -->

            </figure> <!-- END .portfolio-project -->

        </a> <!-- END PORTFOLIO PROJECT LINK -->

    </section> <!-- END .entry-content -->

</article> <!-- END article -->

<?php endwhile; ?> <!-- END have_posts -->

<?php else : ?>

    <!-- #post-not-found -->
    <article id="post-not-found" class="hentry clearfix">
        <header class="article-header">
            <h1><?php _e("Oops, Post Not Found!", "bonestheme"); ?></h1>
        </header>
        <section class="entry-content">
            <p><?php _e("Uh Oh. Something is missing. Try double checking things.", "bonestheme"); ?></p>
        </section>
        <footer class="article-footer">
            <p><?php _e("This is the error message in the custom posty type archive template.", "bonestheme"); ?></p>
        </footer>
    </article>

<?php endif; ?> <!-- END #post-not-found -->





(編集: 以下は、custom-post-type:'portfolio' を作成し、そのデータを保存し、管理領域にポートフォリオ セクションを作成する Wordpress テーマの関数ファイルである、portfolio.php です。このファイルは、カスタムも作成します。カスタム投稿タイプの分類法と、カスタム投稿のすべてに設定したアーカイブ ページのページごとに表示されるカスタム投稿タイプの数を定義します. もう少し整理するために、このファイルをテーマ関数ファイルから分離しました.)

ポートフォリオ.php 関数:

<?php
/****************************************
Creates Portfolio section in the admin 
area and custom posts called Projects
*****************************************/

function create_portfolio_section() { 
    // creating (registering) the custom type 
    register_post_type( 'portfolio', /* (http://codex.wordpress.org/Function_Reference/register_post_type) *IMPORTANT: If you change this, remember to resave/update permalinks from Wordpress admin menu under Setting/Permalinks for the page to display properly. Forgetting to do this will most likely lead you to the 404 error page */
        // All the options for this post type
        array('labels' => array(
            'name' => __('Portfolio', 'bonestheme'), /* This is the Title of the Group */
            'singular_name' => __('Project', 'bonestheme'), /* This is the individual type */
            'all_items' => __('All Projects', 'bonestheme'), /* the all items menu item */
            'add_new' => __('Add New Project', 'bonestheme'), /* The add new menu item */
            'add_new_item' => __('Add New Project', 'bonestheme'), /* Add New Display Title */
            'edit' => __( 'Edit Project', 'bonestheme' ), /* Edit Dialog */
            'edit_item' => __('Edit Project', 'bonestheme'), /* Edit Display Title */
            'new_item' => __('New Project', 'bonestheme'), /* New Display Title */
            'view_item' => __('View Project', 'bonestheme'), /* View Display Title */
            'search_items' => __('Search Project', 'bonestheme'), /* Search Project Title */ 
            'not_found' =>  __('No Projects found', 'bonestheme'), /* This displays if there are no entries yet */ 
            'not_found_in_trash' => __('No Projects found in the Trash', 'bonestheme'), /* This displays if there is nothing in the trash */
            'parent_item_colon' => ''
            ), /* end of arrays */
            'description' => __( 'This is a Portfolio Project', 'bonestheme' ), /* Project Description */
            'public' => true,
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'show_ui' => true,
            'query_var' => true,
            'menu_position' => 5, /* this is what order you want it to appear in on the left hand side menu */ 
            'menu_icon' => get_stylesheet_directory_uri() . '/library/images/custom-post-icon.png', /* the icon for the custom post type menu */
            'rewrite'   => array( 'slug' => 'portfolio', 'with_front' => false ), /* you can specify its url slug *IMPORTANT: If you change this, remember to resave/update permalinks from Wordpress admin menu under Setting/Permalinks for the page to display properly. Forgetting to do this will most likely lead you to the 404 error page */
            'has_archive' => 'portfolio', /* you can rename the slug here *IMPORTANT: If you change this, remember to resave/update permalinks from Wordpress admin menu under Setting/Permalinks for the page to display properly. Forgetting to do this will most likely lead you to the 404 error page */
            'capability_type' => 'post',
            'hierarchical' => false,
            /* the next one is important, it tells what's enabled in the post editor */
            'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'sticky')
        ) /* end of options */
    ); /* end of register post type */

    /* this adds your post categories to the Portfolio section */
    register_taxonomy_for_object_type('category', 'portfolio');
    /* this adds your post tags to the Portfolio section */
    register_taxonomy_for_object_type('post_tag', 'portfolio');

} 

    // adding the function to the Wordpress init
    add_action( 'init', 'create_portfolio_section');

    /*
    for more information on taxonomies, go here:
    http://codex.wordpress.org/Function_Reference/register_taxonomy
    */

    // this adds Portfolio Categories to the Portfolio section
    register_taxonomy( 'portfolio_cat', 
        array('portfolio'), /* if you change the name of register_post_type( 'portfolio', then you have to change this */
        array('hierarchical' => true,     /* if this is true, it acts like categories */             
            'labels' => array(
                'name' => __( 'Portfolio Categories', 'bonestheme' ), /* name of the custom taxonomy */
                'singular_name' => __( 'Portfolio Category', 'bonestheme' ), /* single taxonomy name */
                'search_items' =>  __( 'Search Portfolio Categories', 'bonestheme' ), /* search title for taxomony */
                'all_items' => __( 'All Portfolio Categories', 'bonestheme' ), /* all title for taxonomies */
                'parent_item' => __( 'Parent Portfolio Category', 'bonestheme' ), /* parent title for taxonomy */
                'parent_item_colon' => __( 'Parent Portfolio Category:', 'bonestheme' ), /* parent taxonomy title */
                'edit_item' => __( 'Edit Portfolio Category', 'bonestheme' ), /* edit custom taxonomy title */
                'update_item' => __( 'Update Portfolio Category', 'bonestheme' ), /* update title for taxonomy */
                'add_new_item' => __( 'Add New Portfolio Category', 'bonestheme' ), /* add new title for taxonomy */
                'new_item_name' => __( 'New Portfolio Category Name', 'bonestheme' ) /* name title for taxonomy */
            ),
            'show_admin_column' => true, 
            'show_ui' => true,
            'query_var' => true,
            'rewrite' => array( 'slug' => 'custom-slug' ),
        )
    );   

    // this adds Portfolio Tags to the Portfolio section
    register_taxonomy( 'portfolio_tag', 
        array('portfolio'), /* if you change the name of register_post_type( 'portfolio', then you have to change this */
        array('hierarchical' => false,    /* if this is false, it acts like tags */                
            'labels' => array(
                'name' => __( 'Portfolio Tags', 'bonestheme' ), /* name of the custom taxonomy */
                'singular_name' => __( 'Portfolio Tag', 'bonestheme' ), /* single taxonomy name */
                'search_items' =>  __( 'Search Portfolio Tags', 'bonestheme' ), /* search title for taxomony */
                'all_items' => __( 'All Portfolio Tags', 'bonestheme' ), /* all title for taxonomies */
                'parent_item' => __( 'Parent Portfolio Tag', 'bonestheme' ), /* parent title for taxonomy */
                'parent_item_colon' => __( 'Parent Portfolio Tag:', 'bonestheme' ), /* parent taxonomy title */
                'edit_item' => __( 'Edit Portfolio Tag', 'bonestheme' ), /* edit custom taxonomy title */
                'update_item' => __( 'Update Portfolio Tag', 'bonestheme' ), /* update title for taxonomy */
                'add_new_item' => __( 'Add New Portfolio Tag', 'bonestheme' ), /* add new title for taxonomy */
                'new_item_name' => __( 'New Portfolio Tag Name', 'bonestheme' ) /* name title for taxonomy */
            ),
            'show_admin_column' => true,
            'show_ui' => true,
            'query_var' => true,
        )
    ); 

    /*
        looking for custom meta boxes?
        check out this fantastic tool:
        https://github.com/jaredatch/Custom-Metaboxes-and-Fields-for-WordPress
    */



// Custom Posts Per Page
function portfolio_posts_per_page($query)
{
    switch ( $query->query_vars['post_type'] )
    {
        case 'portfolio':  // Post Type named 'portfolio'
            $query->query_vars['posts_per_page'] = -1; // -1 makes all posts shown on one page, positive numbers show that number of posts per page.
            break;

        // If you have more custom post types and you want to have the posts per page different than the journal/blog settings copy and past the code above and assign proper post type name and desired posts per page
        // EXAMPLE
        /*
        case '<insert post type name here>':  // Post Type named 'portfolio'
            $query->query_vars['posts_per_page'] = <insert desiered posts per page number here>; // -1 makes all posts shown on one page, positive numbers show that number of posts per page.
            break;
        */

        default:
            break;
    }
    return $query;
}

if( !is_admin() )
{
    add_filter( 'pre_get_posts', 'portfolio_posts_per_page' );
}

?>
4

1 に答える 1

1

単一の投稿の下に、複数の投稿を一覧表示するアーカイブテンプレートを含めようとしています。これを行うには、複数のループを実行する必要があります。1つはメインの投稿用、もう1つは以下の投稿のリスト用です。コーデックスには、複数のループに関する情報があります。

編集:コメントでBrad Daltonが指摘しているように、問題を引き起こす可能性のあるメインの投稿ループを変更するため、以下で説明するようにquery_postsを使用しないでください。代わりに新しいWP_Queryオブジェクトを使用してください。コードは私が説明したものと非常に似ています。以下。続きを読む。)

まず、メインの投稿の下で、新しいWP_Queryオブジェクトを作成query_posts()して、他の投稿のリストをクエリします。投稿をクエリする方法については、コーデックスで情報を見つけることができます。(おそらく、投稿タイプのポートフォリオのみ、公開された投稿のみなどが必要です。)次に、を使用してアーカイブテンプレートを含めます。最後に、を呼び出すことを忘れないでください。get_template_part()wp_reset_query()

query_posts('post_type=portfolio'); # Use WP_Query arguments accordingly
get_template_part('archive-portfolio');
wp_reset_query();
于 2013-03-06T04:11:36.167 に答える