it-swarm.com.de

Wie setze ich vorgestellte Posts mithilfe des Kontrollkästchens im Post-Bearbeitungsbildschirm?

Ich möchte die Auswahl eines vorgestellten Beitrags nur durch Aktivieren eines Kontrollkästchens im Bearbeitungsbildschirm UND durch Abrufen dieser vorgestellten Artikel nur aus einer bestimmten Kategorie vornehmen.

kurz was ich suche:

  • vorgestellten Beitrag festlegen

  • schleife werfen vorgestellten Beiträge in einer bestimmten Kategorie (nicht alle Beiträge)

Irgendeine Hilfe? und danke im voraus :)

7
Bialy

Sie können dies tun, indem Sie die folgenden Schritte ausführen:

  1. Fügen Sie Ihren Posts ein benutzerdefiniertes Meta-Feld hinzu
  2. Erstellen Sie mit der Aktion save_post eine Funktion zum Speichern der Metadaten
  3. Fügen Sie das Abfrageargument 'meta_key' zu der von Ihnen verwendeten Abfrage hinzu.

Fügen Sie dies in die Datei functions.php Ihres Themes ein:

function register_post_assets(){
    add_meta_box('featured-post', __('Featured Post'), 'add_featured_meta_box', 'post', 'advanced', 'high');
}
add_action('admin_init', 'register_post_assets', 1);

function add_featured_meta_box($post){
    $featured = get_post_meta($post->ID, '_featured-post', true);
    echo "<label for='_featured-post'>".__('Feature this post?', 'foobar')."</label>";
    echo "<input type='checkbox' name='_featured-post' id='featured-post' value='1' ".checked(1, $featured)." />";
}

function save_featured_meta($post_id){
    // Do validation here for post_type, nonces, autosave, etc...
    if (isset($_REQUEST['_featured-post']))
        update_post_meta(esc_attr($post_id, '_featured-post', esc_attr($_REQUEST['_featured-post']))); 
        // I like using _ before my custom fields, so they are only editable within my form rather than the normal custom fields UI
}
add_action('save_post', 'save_featured_meta');

Verwenden Sie dann in Ihrer Vorlagendatei Folgendes für die Hauptschleife:

    $args = array(
        'meta_key' => '_featured-post', // include underscore prefix in key name
        'meta_value' => 1
    );
    // The number of posts displayed would be determined under Settings->Reading
    query_posts($args);

    if(have_posts()): while(have_posts()): the_post();
        // Do your bidding here

    endwhile; else:

    endif;

NUR ZU BEISPIELZWECKEN: Für benutzerdefinierte Schleifen (wenn Sie mehrere Schleifen auf einer Seite ausführen) würden Sie Folgendes verwenden:

    $args = array(
        'posts_per_page' => 5,
        'meta_key' => '_featured-post',
        'meta_value' => 1
    );

    $featured = new WP_Query($args);

    if ($featured->have_posts()): while($featured->have_posts()): $featured->the_post();
        the_title();
        the_content();
    endwhile; else:

    endif;
9
Brian Fegter

Ich habe versucht, diesen Code auszuführen, und er hilft mir sehr, meinen vorgestellten Beitrag auf meiner Homepage für den benutzerdefinierten Beitragstyp meiner Fallstudie anzuzeigen. Danke vielmals.

         <?php $args = array( 
                'post_type' => 'case_studies',
                'posts_per_page' => 1,
                'meta_key' => 'featured_post',
                'meta_value' => 1
            );

            $featured = new WP_Query($args);

            if ($featured->have_posts()): while($featured->have_posts()): $featured->the_post(); ?>
                <div class="c-image"><?php the_post_thumbnail('large'); ?></div>
                <div class="cstext">
                     <article>
                        <h2><?php the_title(); ?></h2>  
                        <span class="sub-title"> USAF SOCONS </span>
                        <?php the_content(); ?>
                        <a href="<?php echo get_permalink(); ?>" class="readmore">Learn More</a>
                    </article> 

                    <a href="/case-studies" class="btn-primary">View all Case Studies</a>

                </div> 

            <?php 
                endwhile; 
                    else: 'No Content Added';
            endif; ?>
    </div>
</div>  
0
user164332