Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按类别复制wordpress相关帖子_Php_Wordpress - Fatal编程技术网

Php 按类别复制wordpress相关帖子

Php 按类别复制wordpress相关帖子,php,wordpress,Php,Wordpress,我有一个问题,让$do_not_duplicate正常工作我有几个标题在我的博客上复制,我需要它停止。以下是我到目前为止的情况: <?php if (is_single()): ?> <section> <h3>Related Posts</h3> <?php global $post; $cats = wp_get_post_categories($post->ID);

我有一个问题,让$do_not_duplicate正常工作我有几个标题在我的博客上复制,我需要它停止。以下是我到目前为止的情况:

<?php if (is_single()): ?>
<section>
<h3>Related Posts</h3>
<?php 
            global $post;
            $cats = wp_get_post_categories($post->ID);
            $do_not_duplicate[] = $post->ID; 
            if ( count ( $cats ) > 0):
            $args = array( 'numberposts' => 3, 'category' => implode($cats, ","), 'exclude' => $post->ID, 'post__not_in' => $do_not_duplicate );
            $related_posts = get_posts( $args );
            if (count($related_posts)): ?>

            <ul>
                <?php foreach ($related_posts as $post) :  setup_postdata($post); ?>
                <li><a href="<?php the_permalink() ?>"><?php while ( have_posts() ) : the_post(); $do_not_duplicate[] = $post->ID; if ( get_the_title() ) the_title(); else the_ID(); ?><?php 
endwhile; 
wp_reset_query(); ?>
                </a></li>

                <?php endforeach; ?>
            </ul>




            <?php else: ?>
            <p>No related posts found.</p>
            <?php endif; ?>
            <?php else: ?>
            <p>No related posts found.</p>
            <?php endif; ?>

        </section>
        <?php endif; ?>

相关职位
没有找到相关的帖子

没有找到相关的帖子

您在foreach中有一段时间(have_posts()),这会产生重复。您可以将循环更改为以下内容:

<?php 
        global $post;
        $cats = wp_get_post_categories($post->ID);
        $do_not_duplicate[] = $post->ID; 
        if ( count ( $cats ) > 0):
        $args2 = array( 'numberposts' => 3, 'category' => implode($cats, ","), 'exclude' => $post->ID, 'post__not_in' => $do_not_duplicate );
        $related_posts = get_posts( $args2 );
        if (count($related_posts)): 
  ?>

  <ul>
    <?php foreach ($related_posts as $post) :  setup_postdata($post); ?>
            <li><a href="<?php the_permalink() ?>" ><?php $do_not_duplicate[] = $post->ID; if ( get_the_title() ) the_title(); else the_ID(); ?></a></li>
    <?php endforeach; ?>
        </ul>
        <?php wp_reset_query(); ?>
  <?php endif;endif; ?>


在循环结束时,var$do_not_duplicate保存帖子的id和所有相关帖子的id。

请看我想做什么,还是有点模糊?我觉得这很接近,哇,学习php 2年来我犯了一个多大的错误,但我想我仍然是一个noob。哈哈,你提供的代码不起作用。WillxD-我看到你删除了$do_not_duplicate[]=$post->ID;在结果中是否有一种不同的方法可以将其应用到结果中,以确保结果中没有重复项。好的,这是显示重复项的原始代码。这就是我需要重写或修复的内容。在这一点上,我可以重做这一切。任何帮助都将不胜感激:请注意,上面的代码do_not_duplicate没有正常工作。我还没有测试代码,但它应该得到文章的类别,然后将您的参数设置为显示3篇$cats的文章,不包括当前的文章。是否要排除其他内容?相关职位