简体   繁体   中英

Permalink for the post doesn't work

I have a page which retrieves blogposts from several blogs under the same tag or category. I have problems with retrieving the permalink for the blogpost, it redirects to the same blog all the time and says that the page doesn't exist, ie it always goes to blog #5 stated in the 5th line and ignores the switch statement Here is my code:

<?php 
        global $wpdb;
        global $post;
        $tag = $_GET['avain'];
        $postarr = array();
        switch_to_blog( 5 );
        $blogs = $wpdb->get_results( "SELECT blog_id FROM {$wpdb->blogs} WHERE blog_id != {$wpdb->blogid} AND site_id = '{$wpdb->siteid}'  AND spam = '0' AND deleted = '0' AND archived = '0'", ARRAY_A);
        array_unshift($blogs, 1); 
        foreach($blogs as $blog) {
            $wpdb->set_blog_id($blog[ 'blog_id' ]);
            $tax_id = $wpdb->get_var("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE (taxonomy = 'post_tag' OR taxonomy = 'category') AND term_id IN (SELECT term_id FROM $wpdb->terms WHERE name='$tag')");
            $post_id = $wpdb->get_results("SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = $tax_id");
             foreach ($post_id as $id) {
$postarr[] = $id->object_id; 
}

$postsAsCommaSepString = implode( ',', $postarr ); 

$posts = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}posts WHERE ID IN    ($postsAsCommaSepString)");
            foreach ($posts as $post):setup_postdata($post);
            $author = get_the_author();
            switch ($author) {
case "Kate":
    switch_to_blog(3);
    break;
case "Maria":
    switch_to_blog(4);
    break;
case "Germanica":
    switch_to_blog(5);
    break;

}
                        ?>

                <div class="post"><header class="post-header"><div class="date-holder"><span><?php the_time('j F, Y') ?></span></div>
                <a href="<?php echo get_permalink($post->ID); ?>"><?php the_title(); ?></a></header>
                <div class="post-content"><?php the_content(); ?></div></div>
            <?php endforeach; 
            wp_reset_postdata(); 
        }
        ?>

Is that because of you put

 switch_to_blog(5);

in the 5th line, and the page redirects you to that blog BEFORE the switch statement is even read?

Just asking, I don't really understand your code, but I hope you find this helpful!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM