নির্দিষ্ট পোস্ট ফর্ম্যাটের কেবল get_posts


10

আমি কেবলমাত্র আমার "সাধারণ" পোস্ট ফর্ম্যাট নিবন্ধগুলি (লিঙ্ক, একপাশে, উদ্ধৃতি, ইত্যাদি ফর্ম্যাটগুলি) সহ একটি সংরক্ষণাগার তালিকা তৈরি করার চেষ্টা করছি।

আমি নীচের কোডটিতে কীভাবে has_post_format( 'standard' )বা অনুরূপ কিছু বাস্তবায়ন করব ?

get_postsকেবলমাত্র নির্দিষ্ট বিন্যাসের ধরণের অনুরোধগুলির জন্য আমি কোনও ক্যোয়ারী সন্ধান করতে সক্ষম হইনি ।

<?php    
    // Get the posts
    $myposts = get_posts('numberposts=-1&orderby=post_date&order=DESC');     
?>

<?php foreach($myposts as $post) : ?>   

<?php    
    // Setup the post variables
    setup_postdata($post);

    $year = mysql2date('Y', $post->post_date);
    $month = mysql2date('n', $post->post_date);
    $day = mysql2date('j', $post->post_date);    
?>

<p>
    <span class="the_article">
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    </span>
    &nbsp;&nbsp;&nbsp;
    <span class="the_day">
        <?php the_time('j F Y'); ?>
    </span>
</p>

<?php endforeach; ?>

আমার পিএইচপি দক্ষতা শিক্ষানবিশ পর্যায়ে সেরা, তাই যে কোনও সাহায্যের প্রশংসা করা হবে।

উত্তর:


20

আপনি প্রকৃতপক্ষে কোনও কর-সংক্রান্ত-যুক্তিটি পাস করতে পারবেন না get_posts() (সম্পাদনা:। আসলে, হ্যাঁ আপনি যা করতে পারেন দ্য কোডেক্স মাত্র কিছুটা স্পষ্ট নয় উৎস এ খুঁজছি,। get_posts()হয়, শুধু একটি মোড়কের তার অন্তরে WP_Query()।) আপনি মেটা কী-/ মূল্যবোধ, এবং পোস্ট পাস করতে পারেন ধরনের , কিন্তু না এমন পোস্ট হিসাবে taxonomies বিন্যাস। সুতরাং এই লাইনের জন্য:

$myposts = get_posts('numberposts=-1&orderby=post_date&order=DESC');

আমি এর WP_Query()পরিবর্তে ব্যবহারের পরামর্শ দেব get_posts():

$myposts = new WP_Query( array(
    'tax_query' => array(
        array(                
            'taxonomy' => 'post_format',
            'field' => 'slug',
            'terms' => array( 
                'post-format-aside',
                'post-format-audio',
                'post-format-chat',
                'post-format-gallery',
                'post-format-image',
                'post-format-link',
                'post-format-quote',
                'post-format-status',
                'post-format-video'
            ),
            'operator' => 'NOT IN'
        )
    )
) );

দ্রষ্টব্য: হ্যাঁ, এটি অনেকটা নেস্টেড অ্যারে। ট্যাক্স প্রশ্নগুলি এর মতো কৌতুকপূর্ণ হতে পারে।

পরবর্তী পদক্ষেপটি আপনার লুপের খোলা / বন্ধ বিবৃতি পরিবর্তন করতে হবে। এগুলি পরিবর্তন করুন:

<?php foreach($myposts as $post) : ?>

    <?php /* loop markup goes here */ ?>

<?php endforeach; ?>

... এটি:

<?php if ( $myposts->have_posts() ) : while ( $myposts->have_posts() ) : $myposts->the_post(); ?>

    <?php /* loop markup goes here */ ?>

<?php endwhile; endif; ?>

<?php wp_reset_postdata(); ?>

আপনার প্রকৃত লুপ মার্কআপ উচিত একই থাকবে ছাড়া পাবে যা আপনি আর এখন কল করার প্রয়োজনীয়তা setup_postdata( $post ):

<?php        
    $year = mysql2date('Y', $post->post_date);
    $month = mysql2date('n', $post->post_date);
    $day = mysql2date('j', $post->post_date);    
?>

<p>
    <span class="the_article">
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    </span>
    &nbsp;&nbsp;&nbsp;
    <span class="the_day">
        <?php the_time('j F Y'); ?>
    </span>
</p>

সুতরাং, এটি সব একত্রিত:

<?php
// Only query posts with the
// "standard" post format, which
// requires *excluding* all other
// post formats, since neither the
// "post_format" taxonomy nor the
// "post-format-standard" taxonomy term
// is applied to posts without
// defined post formats
$myposts = new WP_Query( array(
    'tax_query' => array(
        array(                
            'taxonomy' => 'post_format',
            'field' => 'slug',
            'terms' => array( 
                'post-format-aside',
                'post-format-audio',
                'post-format-chat',
                'post-format-gallery',
                'post-format-image',
                'post-format-link',
                'post-format-quote',
                'post-format-status',
                'post-format-video'
            ),
            'operator' => 'NOT IN'
        )
    )
) );

// Open the loop
if ( $myposts->have_posts() ) : while ( $myposts->have_posts() ) : $myposts->the_post(); ?>

    $year = mysql2date('Y', $post->post_date);
    $month = mysql2date('n', $post->post_date);
    $day = mysql2date('j', $post->post_date);    
    ?>

    <p>
        <span class="the_article">
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        </span>
        &nbsp;&nbsp;&nbsp;
        <span class="the_day">
            <?php the_time('j F Y'); ?>
        </span>
    </p>  
    <?php 

// Close the loop
endwhile; endif;

// Reset $post data to default query
wp_reset_postdata();

ধন্যবাদ, আপনি এটি খুব সুন্দরভাবে ভেঙে দিয়ে কোনও শিক্ষানবিসকে বোঝা সত্যিই সহজ করে দিয়েছেন। আমি অনুমান করছি যেহেতু আমি কেবল একপাশে, লিঙ্ক এবং স্ট্যান্ডার্ড পোস্ট ফর্ম্যাটগুলি ব্যবহার করি, আমি আসলে বাকীটি এড়িয়ে যেতে পারি।
ডাবা

1
হ্যাঁ; আপনি কেবল যে কোনও পোস্ট ফর্ম্যাটগুলির জন্য সমর্থন সক্ষম করেছেন তা অন্তর্ভুক্ত করতে হবে ।
চিপ বেনেট

get_posts () আসলে ডাব্লুপিউকিউয়ারি ব্যবহার করে, সুতরাং অবশ্যই আপনি ট্যাক্সনমি কোয়েরিতে পাস করতে পারেন, কেবল এটিকে হিসাবে পাস করুন, কোয়েরি স্ট্রিং হিসাবে নয়।
শবুশুবাবু

@ শাশুবাবু এর জন্য ধন্যবাদ আমি আমার উত্তর আপডেট করেছি।
চিপ বেনেট

2

পোষ্ট ফর্ম্যাটগুলি বলা হয় একটি সংজ্ঞা হিসাবে কেবল পূর্বনির্ধারিত শর্তাদি post_format, সুতরাং আপনার পোস্টের ফর্ম্যাট সংরক্ষণাগার তৈরি করতে ডাব্লুপি টেমপ্লেট শ্রেণিবদ্ধ ব্যবহার করতে সক্ষম হওয়া উচিত। taxonomy-post_format-post-format-standard.phpআপনার থিমের মূল হিসাবে ডাকা একটি ফাইল তৈরি করুন এবং সেই ফাইলটি আপনার সমস্ত স্ট্যান্ডার্ড পোস্ট আউটপুট করতে ব্যবহৃত হবে। আপনি অন্য কোনও ফর্ম্যাট নামের, যেমন aside, linkবা videoযেমন- এর সাথে 'স্ট্যান্ডার্ড' প্রতিস্থাপন করতে পারেন taxonomy-post_format-post-format-video.php। এটি যতক্ষণ না আপনি এই ফর্ম্যাটটিতে লেগে থাকেন ততক্ষণ বিটিডব্লিউর জন্য অন্য কোনও শৈলীর জন্য কাজ করে:taxonomy-{TAXONOMY_NAME}-{TERM_NAME}.php

আপনি যদি কাস্টম লুপ সহ পোস্ট ফর্ম্যাটগুলি প্রদর্শন করতে চান, যেমন আপনার সাইডবারে বা কোনও পৃষ্ঠার টেম্পলেটের মধ্যে, তবে আপনি @ কেইজার থেকে ট্যাক্স কোয়েরিটি ব্যবহার করতে পারেন। কেবলমাত্র সারণী post_formatএবং এর সাথে স্লাগগুলি বিকল্প করুন post-format-{FORMAT_NAME}


ধন্যবাদ, তবে আমি পৃষ্ঠার টেমপ্লেটের মধ্যে সংরক্ষণাগারগুলি তৈরি করার চেষ্টা করছি, তাই আমি অন্য একটি সমাধানের সাথে যাব :)
ডাবা

1

দুটি পৃথক করের জন্য। একক জন্য, আপনি relationআর্গ আউট ছেড়ে যেতে পারেন ।

$args = array(
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'movie_janner',
            'field' => 'slug',
            'terms' => array( 'action', 'commedy' ) // Single terms as string - multiple as array
        ),
        array(
            'taxonomy' => 'actor',
            'field' => 'id',
            'terms' => array( 103, 115, 206 ),
            'operator' => 'NOT IN'
        )
    )
);

0

আপনি এর মতো কৌশল করতে পারেন:

<?php 
while( have_posts() ) : the_post();
get_post_format()==false? get_template_part( 'loop', 'posts' ) : false;
endwhile;
?>

এটি স্ট্যান্ডার্ড পোস্ট ফর্ম্যাটের জন্য get_post_format () মিথ্যা বলে দেয় returns http://codex.wordpress.org/Function_Reference/get_post_format


আসলে এটি কাজ করে তবে আপনি যখন পেজিংয়ের কথা বিবেচনা করবেন তখন আপনি সমস্যার মধ্যে পড়বেন। যদি আপনি এমন কিছু করেন 'posts_per_page' => 6এবং মানহীন টেম্পলেট সহ 4 টি পোস্ট করেন তবে আপনি কেবল 2 টি পোস্ট দেখতে পাবেন, যা 6 টি দৃশ্যমান হওয়া উচিত not ক্যোয়ারী ফিল্টার করা প্রুফ যাওয়ার উপায় ..
হনক 31
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.