wp_get_recent_posts停止工作(wp_get_recent_posts stoppe

2019-10-17 01:51发布

我想在单张贴模式何时返回2个的最新帖子,但不包括目前的职位。 而我做到了。 问题是,它只是停止工作。 它并没有改变代码,并停止在服务器上,以及在我的本地。

下面的代码:

<section id='recent_posts'>

            <header class='recent_header'>
                Recent posts
            </header>

            <?php 
                $id = $post->ID;
                $recent_posts = wp_get_recent_posts("numberposts=2&exclude=$id");

                foreach( $recent_posts as $recent ) { ?>                        

                    <article class='single_recent'>
                        <header>
                            <a href="<?php echo get_permalink($recent["ID"]); ?>"><?php echo $recent["post_title"]; ?></a>
                        </header>
                        <p>
                            <?php echo get_excerpt_by_id($recent["ID"]); ?>
                        </p>
                    </article>

            <?php } ?>

        </section>

没有人有一个解释?

我试着删除的说法,仍然一无所获。 它返回一个空数组。

任何建议哪些其他功能我应该使用来达到同样的效果呢?

编辑:

    <?php 

get_header();
get_sidebar();

?>

        <?php the_post() ?>

        <article class='post-single'>

                <header class='post_header'>

                    <h1><?php the_title(); ?></h1>

                    <div class='post_header_bottom'>
                        <strong class='post_category'><?php echo get_the_category_list(', '); ?></strong>
                        <strong class='post_author'><span class='symbol'>U</span> by <?php the_author(); ?></strong>
                    </div>

                </header>

                <?php if (has_post_thumbnail()) : ?>
                <figure class='post_single_image'>
                    <?php the_post_thumbnail(); ?>
                    <figcaption>No Will No Skill</figcaption>
                </figure>
                <?php endif; ?>

                <div class='post_perex'>
                    <?php the_content(); ?>
                </div>

                <footer class='post_footer'>

                    <div class='post_footer_top'>

                        <div class='post_tags'>
                            <?php the_tags('', '', ''); ?>
                        </div>

                        <div class='post_time'>
                            <time datetime='<?php the_time('Y-m-d'); ?>' pubdate>
                                <span class='symbol'>P </span>
                                <?php relative_post_the_date(); ?>
                            </time>
                        </div>

                    </div>

                    <div class='post_share'>

                            <div class='share_show'>
                                <span class='symbol'>f</span> Like
                                 | 
                                <span class='symbol'>g</span> +1
                                 | 
                                <span class='symbol'>t</span> Tweet

                                <?php
                                    if(function_exists('display_social4i'))
                                        echo display_social4i("large","align-left");
                                ?>

                            </div>

                        </div>

                </footer>

            </article>

            <?php comments_template(); ?>   

            <section id='recent_posts'>

                <header class='recent_header'>
                    Recent posts
                </header>

                <?php 
                    global $post;
                    $id = $post->ID;
                    $qargs = array(
                        'post__not_in'=> array($id),
                        'posts_per_page' => 2
                    );
                    $recent_posts = new WP_Query($qargs);

                    if ($recent_posts->have_posts()) echo 'yes'; else echo 'nope';

                    if($recent_posts->have_posts()) : while($recent_posts->have_posts()) : $recent_posts->the_post(); ?>                        

                        <article class='single_recent'>
                            <header>
                                <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                            </header>
                            <p>
                                <?php the_excerpt(); ?>
                            </p>
                        </article>
                <?php endwhile;endif; ?>
            </section>

            <div class='space'></div>
        </div>


<?php
get_footer();
?>

Answer 1:

你错过了你的循环,或至少在当前职位对象的全局实例。 虽然我更喜欢使用循环喽,你可以逃脱使用后者。

更改:

$id = $post->ID;
$recent_posts = wp_get_recent_posts("numberposts=2&exclude=$id");

至:

global $post;
$id = $post->ID;
$recent_posts = wp_get_recent_posts("numberposts=2&exclude=$id");

更新:

环可以在单个视图被用来抓住从默认query_posts对象的信息。 虽然这只是一个职位,该循环最常用于填充the_content等信息。

你是正确的,ID应该是在这种情况无关,因为wp_get_recent_posts()还是应该返回一些结果不带任何参数(当然,除非你正在处理自定义文章类型)。

另一种解决办法是尝试让使用WP_Query您最近的帖子:

<section id='recent_posts'>

        <header class='recent_header'>
            Recent posts
        </header>

        <?php 
            global $post;
            $id = $post->ID;
            $qargs = array(
                'post__not_in'=> array($id),
                'posts_per_page' => 2
            );
            $recent_posts = new WP_Query($qargs);

            if($recent_posts->have_posts()) : while($recent_posts->have_posts()) : $recent_posts->the_post(); ?>                        

                <article class='single_recent'>
                    <header>
                        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                    </header>
                    <p>
                        <?php the_excerpt(); ?>
                    </p>
                </article>
        <?php endwhile;endif; ?>
</section>

WP_Query将默认为标准的“排序依据” =>“日期”和“秩序” =>“DESC”参数,所以那些不需要被明确指出(不过,如果你喜欢,你可以添加的话)。

如上所述,并且在我的评论中提到,我不确定,如果你想只是最近的帖子,或者如果你想查询最近的自定义后的类型。 如果最近的职位类型的“后”,这就是你想要的东西,那是WP_Query的“post_type”参数以及wp_get_recent_posts默认。

否则,你将需要明确声明“post_type”参数,使得$ qargs样子:

$qargs = array(
    'post__not_in'=> array($id),
    'posts_per_page' => 2,
    'post_type' => array('post', 'custom_post_type_slug', ...)
);

只是为了检查,你还可以设置“post_type”到“所有”,如果你想确保SOMETHING返回。 如果没有被设置为“所有”或者WP_Query或wp_get_recent_posts与“post_type”返回,那么问题是大得多,我需要看到你的single.php模板上的所有代码。

希望这可以帮助。

新的更新:

尝试注释掉的代码完全和替代块:

wp_get_archives(array('type'=>'postbypost'));

如果还是不行,那么我新鲜的想法。 事情可能发生在你的文件主机的结束,可能可以解释事情发生无中生有。 检查,看看他们是否有关于这类活动的任何公告。 我知道很多filehosts在更换PHP4和旧版本的MySQL,这可能会导致一些不可预见的问题的过程。

我会尝试与WordPress的清洁,安装和你的主题的副本单独创建一个新的子域。 完成这些设置,只需要创建一个新的职位,看看是否出现同样的问题。

如果是这样,那么注释掉的代码块(可能先从get_sidebar通过你的第一个注释掉<article>...</article>块)在你的single.php文件,并制定出可能会弹出任何错误。 如果代码中,我们突然制作的块开始填充,然后张贴的代码,这是防止这样的事情发生块,我会尽力与您开展进一步的工作(也就是,如果你仍然有问题)。

否则,如果全新安装修复您的问题,那么它可能某种在你wp_options表不符。 我将开始在合并表(第一wp_posts,然后wp_postmeta,然后wp_terms ....)直至该问题再次弹出。

不幸的是,我想详尽的测试可能是为了得到这个异常理顺。 对不起,我没有一个纯代码的解决方案。 这是你正在经历一个非常奇怪的问题。 随时通知我,我会尽我所能来帮助。



文章来源: wp_get_recent_posts stopped working
标签: wordpress