无自定义帖子类型插件的相关帖子

时间:2014-06-15 作者:user51781

我需要一些帮助来修改这个脚本。我还试图通过自定义分类法和自定义帖子类型来显示相关帖子。

//* Define custom image size for featured image in Related Posts
add_image_size( \'related\', 300, 0, true );


add_action( \'genesis_after_entry_content\', \'child_related_posts\' );
/**
 * Outputs related posts with thumbnail
 *
 * @author Nick the Geek
 * @url http://designsbynickthegeek.com/tutorials/related-posts-genesis
 * @global object $post
 */
function child_related_posts() {

    if ( is_singular ( ) ) {

        global $post;

        $count = 0;
        $postIDs = array( $post->ID );
        $related = \'\';
        $tags = wp_get_post_tags( $post->ID );
        $cats = wp_get_post_categories( $post->ID );

        if ( $tags ) {

            foreach ( $tags as $tag ) {

                $tagID[] = $tag->term_id;

            }

            $args = array(
                \'tag__in\'               => $tagID,
                \'post__not_in\'          => $postIDs,
                \'showposts\'             => 8,
                \'ignore_sticky_posts\'   => 1,
                \'tax_query\'             => array(
                    array(
                                        \'taxonomy\'  => \'post_format\',
                                        \'field\'     => \'slug\',
                                        \'terms\'     => array(
                                            \'post-format-link\',
                                            \'post-format-status\',
                                            \'post-format-aside\',
                                            \'post-format-quote\'
                                            ),
                                        \'operator\'  => \'NOT IN\'
                    )
                )
            );

            $tag_query = new WP_Query( $args );

            if ( $tag_query->have_posts() ) {

                while ( $tag_query->have_posts() ) {

                    $tag_query->the_post();

                    // $img = genesis_get_image() ? genesis_get_image( array( \'size\' => \'related\' ) ) : \'<img src="\' . get_bloginfo( \'stylesheet_directory\' ) . \'/images/related.png" alt="\' . get_the_title() . \'" />\';
                    $img = genesis_get_image( array( \'size\' => \'related\' ) );

                    $related .= \'<div class="related-post"><a href="\' . get_permalink() . \'" rel="bookmark" title="Permanent Link to\' . get_the_title() . \'">\' . $img . get_the_title() . \'</a></div>\';

                    $postIDs[] = $post->ID;

                    $count++;
                }
            }
        }

        if ( $count <= 7 ) {

            $catIDs = array( );

            foreach ( $cats as $cat ) {

                if ( 6 == $cat )
                    continue;
                $catIDs[] = $cat;

            }

            $showposts = 8 - $count;

            $args = array(
                \'category__in\'          => $catIDs,
                \'post__not_in\'          => $postIDs,
                \'showposts\'             => $showposts,
                \'ignore_sticky_posts\'   => 1,
                \'orderby\'               => \'rand\',
                \'tax_query\'             => array(
                                    array(
                                        \'taxonomy\'  => \'post_format\',
                                        \'field\'     => \'slug\',
                                        \'terms\'     => array(
                                            \'post-format-link\',
                                            \'post-format-status\',
                                            \'post-format-aside\',
                                            \'post-format-quote\' ),
                                        \'operator\' => \'NOT IN\'
                                    )
                )
            );

            $cat_query = new WP_Query( $args );

            if ( $cat_query->have_posts() ) {

                while ( $cat_query->have_posts() ) {

                    $cat_query->the_post();

                    // $img = genesis_get_image() ? genesis_get_image( array( \'size\' => \'related\' ) ) : \'<img src="\' . get_bloginfo( \'stylesheet_directory\' ) . \'/images/related.png" alt="\' . get_the_title() . \'" />\';
                    $img = genesis_get_image( array( \'size\' => \'related\' ) );

                    $related .= \'<div class="related-post"><a href="\' . get_permalink() . \'" rel="bookmark" title="Permanent Link to\' . get_the_title() . \'">\' . $img . get_the_title() . \'</a></div>\';
                }
            }
        }

        if ( $related ) {

            printf( \'<div class="related"><h3 class="related-title">Related Posts</h3><div class="related-posts-list" data-columns>%s</div></div>\', $related );

        }

        wp_reset_query();

    }
}

//* Enqueue and initialize jQuery Masonry script
add_action( \'wp_enqueue_scripts\', \'sk_masonry_script\' );
function sk_masonry_script() {

    if ( is_singular( \'post\' ) ) {

        wp_enqueue_script( \'masonry-init\', get_stylesheet_directory_uri().\'/js/masonry-init.js\', array( \'jquery-masonry\' ), \'1.0\', true );

    }

}
以下是我的帖子类型:

1: 帖子(标签、类别)

2: custom\\u post\\u类型:(4个自定义分类)

3: custom\\u post\\u类型:(2个自定义分类)

4: custom\\u post\\u类型:(1个自定义分类)

我可以通过查看代码进行一些调整,并且可以显示与自定义帖子类型相关的帖子。然而,我确信有比我更好的人可以做到这一点。

1 个回复
SO网友:quyet

欢迎,事实上,如果要给我看相关文章,你可以使用插件

这可以帮助您减少很多工作

然而,正如我所看到的,您希望显示有关如何能够优化网站加载速度的相关文章

我不建议您在wordpress之外使用API函数,但对我来说这是一个很好的解决方案。

我可以给你一个如下的解决方案:

您可以为文章标题创建一个自定义字段(内容是文章的标题)

您需要为表wp\\u postemta(meta\\u值字段)建立索引

添加此字段的全文

然后使用SQL语句(而不是wordpress API)查询文章标题下的相关文章

使用带有meta\\u值的全文搜索具有相对较好的速度。

祝你成功

结束

相关推荐