মাল্টিসাইটে সাইটগুলি থেকে পোস্ট পাবেন?


17

আমি একাধিক সাইট পোস্ট টানতে চেষ্টা করছি। উদাহরণস্বরূপ, আমি একটি বিভাগ এবং মোট পোস্ট 10 দ্বারা একক সাইট পোস্টগুলি টেনে আনতে পারি।

তবে আমি দুটি পৃথক মাল্টিসাইট ব্লগ 1 এবং 2 থেকে উভয় পোস্টগুলি সরিয়ে দেওয়ার চেষ্টা করছি তবে কেবল ব্লগ 1 কাজ করে। এছাড়াও, আমি ব্লগ 1 এবং ব্লগ 2 থেকে অন্য বিভাগে অন্য বিভাগটি বের করতে চাই। আমি কীভাবে এটি অর্জন করতে পারি?

আমি যা করার চেষ্টা করছি তা এখানে:

<?php
global $switched;
switch_to_blog(1,2); //switched to 1 & 2 but only 1 working

// Get latest Post
$latest_posts = get_posts('&cat=64&showposts=10');
$cnt =0;?> 
    <ul>
    <?php foreach($latest_posts as $post) : setup_postdata($post);?>
    <li>
        <a href="<?php echo get_page_link($post->ID); ?>" title="<?php echo $post->post_title; ?>"><?php echo  short_title('...', 7); ?></a>
    </li>                                
<?php endforeach ; ?>

<?php restore_current_blog(); //switched back to main site ?>

উত্তর:


12

ওয়ার্ডপ্রেস ফাংশনটি switch_to_blog()একটি ইনপুট পরামিতি হিসাবে কোনও পূর্ণসংখ্যার প্রত্যাশা করে। আপনি কোডেক্সে এটি সম্পর্কে আরও পড়তে পারেন:

http://codex.wordpress.org/Function_Reference/switch_to_blog

পরিবর্তে এই ধরণের কাঠামো চেষ্টা করুন:

// Get the current blog id
$original_blog_id = get_current_blog_id(); 

// All the blog_id's to loop through
$bids = array( 1, 2 ); 

foreach( $bids as $bid )
{
    // Switch to the blog with the blog_id $bid
    switch_to_blog( $bid ); 

    // ... your code for each blog ...
}

// Switch back to the current blog
switch_to_blog( $original_blog_id ); 

হালনাগাদ:

আপনি যদি প্রতিটি ব্লগের জন্য বিভিন্ন বিভাগ থেকে পোস্টগুলি পেতে চান তবে আপনি উদাহরণস্বরূপ ব্যবহার করতে পারেন:

// Get current blog
$original_blog_id = get_current_blog_id(); 

// Setup a category slug for each blog id, you want to loop through - EDIT
$catslug_per_blog_id = array( 
    1 => 'video',
    4 => 'news' 
); 

foreach( $catslug_per_blog_id as $bid => $catslug )
{
    // Switch to the blog with the blog id $bid
    switch_to_blog( $bid ); 

    // ... your code for each blog ...
    $myposts = get_posts( 
        array( 
            'category_name'  => $catslug,
            'posts_per_page' => 10, 
        )
    );
    // ... etc
}

// Switch back to the current blog
switch_to_blog( $original_blog_id ); 

উদাহরণ:

এখানে একটি উদাহরণ যা আপনাকে টেমপ্লেট ট্যাগগুলি ব্যবহার করতে দেয় (এটি আমার মাল্টিসাইট ইনস্টলের উপর কাজ করে):

// Get current blog
$original_blog_id = get_current_blog_id();

// Setup a category for each blog id you want to loop through - EDIT
$catslug_per_blog_id = array( 
    1 => 'video',
    4 => 'news' 
); 

foreach( $catslug_per_blog_id as $bid => $catslug )
{
    //Switch to the blog with the blog id $bid
    switch_to_blog( $bid ); 

    // Get posts for each blog
    $myposts = get_posts( 
        array( 
            'category_name'  => $catslug,
            'posts_per_page' => 2, 
        )
    );

    // Skip a blog if no posts are found
    if( empty( $myposts ) )
        continue;

    // Loop for each blog
    $li = '';
    global $post;
    foreach( $myposts as $post )
    {
        setup_postdata( $post );
        $li .= the_title(
            $before = sprintf( '<li><a href="%s">', esc_url( get_permalink() ) ),
            $after  = '</a></li>',
            $echo   = false
        );
    }

    // Print for each blog
    printf(
        '<h2>%s (%s)</h2><ul>%s</ul>',
        esc_html( get_bloginfo( 'name' ) ),
        esc_html( $catslug ),
        $li  
    );
}

// Switch back to the current blog
switch_to_blog( $original_blog_id ); 

wp_reset_postdata();

বিথোভেন নামের সাইটের 1 এবং বাখ নামের 4 নম্বর সাইট সহ আমাদের উপরের উদাহরণের জন্য এখানে একটি ডেমো স্ক্রিনশট রয়েছে :

ডেমো

দ্রষ্টব্য: ধন্যবাদ প্রদানের @brasofilo করার লিংক যে সুস্পষ্ট আমার ভুল বোঝাবুঝি restore_current_blog();-)

পিপিএস: নিম্নলিখিত মন্তব্য ভাগ করে নেওয়ার জন্য @ ক্রিসটাইনকুপারকে ধন্যবাদ:

শুধু একটি বন্ধুত্বপূর্ণ সতর্কতা। আপনার আসল ব্লগ আইডিটি পরিবর্তনশীল হিসাবে সেট না করার বিষয়টি নিশ্চিত করুন $blog_id- এটি কারণ কারণ switch_to_blog() প্রক্রিয়া চলাকালীন , $blog_idমূল ফাংশন দ্বারা ওভাররেইন করা হবে, যার অর্থ আপনি যখন মূল ব্লগে ফিরে যাওয়ার চেষ্টা করবেন, আপনি শেষটিতে স্যুইচিংয়ের সাথে শেষ করবেন আপনি যার মধ্য দিয়ে লুপ করেছেন। কিছুটা মন-ধাঁধা। :)


এখানে আমি কীভাবে আমার পোস্টগুলি লোড করব pastie.org/7827649 আমি কীভাবে এটি প্রয়োগ করতে পারি যেমন আমি উভয় ব্লগ আইডির দ্বারা উল্লেখ করেছি তবে প্রতিটি ব্লগ আইডিতে নির্দিষ্ট বিভাগ ব্লগ 1 এর বিভাগের ভিডিও থাকবে এবং 2 টি ব্লগের বিভাগের খবরও পাবেন 10 সীমা মোট পোস্ট।
ডেডআর্টকোর

1
আমি বিভিন্ন বিভাগ সমর্থন করার জন্য উত্তর আপডেট করেছি।
বার্জায়ার

1
PS: আবার উদাহরণটি আপডেট করেছে, যাতে আপনি ;-) এর the_title()পরিবর্তে টেম্পলেট ট্যাগগুলি ব্যবহার করতে পারেন $post->post_titleআশা করি আমি আপনাকে যথেষ্ট তথ্য দিয়েছি যাতে আপনি আপনার প্রকল্প শেষ করতে পারেন।
বার্জায়ার

1
প্রতিস্থাপন foreach($rightbox as $post)সঙ্গে foreach($posts as $post)আপনার pastie হবে।
বার্জায়ার

1
আশা করি ঠিক আছে যে আমি
@ ক্রিসটাইনকুপার

0

আমার "মাল্টিসাইট পোস্ট রিডার" প্লাগইন https://wordpress.org/plugins/multisite-post-reader/ এ কোডটি একবার দেখুন । এটি পোস্টগুলির মাধ্যমে লুপের অন্যান্য উত্তরের কৌশলটি ব্যবহার করে। আমার কাছে প্লাগইনও রয়েছে যা চিত্রগুলির জন্য একই কাজ করে।

যেহেতু এটি একটি ওপেন সোর্স কোড তাই আপনার নিজের ব্যবহারের জন্য কোডটি ঘুরে বেড়াতে এবং এর টুকরো ব্যবহার করতে আপনাকে স্বাগতম। (আমি খুঁজে পেয়েছি মুক্ত-উত্স কোড থেকে কিছু কোড সংশোধন করা হয়েছে is)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.