Wie ordne ich dem Beitrag einen Status / eine Marke zu?

7

Ich möchte einige Beiträge markieren, um sie in einen Schieberegler für vorgestellte Inhalte aufzunehmen. Zu diesem Zweck möchte ich ein Kontrollkästchen auf der neuen Beitragsseite einfügen, damit der Beitrag als aktiviert markiert wird, wenn das Kontrollkästchen aktiviert ist. Dann kann ich alle markierten Beiträge im Schieberegler anzeigen. Wie kann das gemacht werden? Vielen Dank.

Oram
quelle
Dies erfolgt normalerweise entweder durch Platzieren der vorgestellten Beiträge in der vorgestellten Kategorie oder durch Markieren mit vorgestellten Tags. Es hängt von Ihrem Thema ab, aber in 99% der Fälle ist es entweder das Tagging oder die Auswahl der vorgestellten Kategorien.
Hameedullah Khan
klebrig wird auch manchmal dafür verwendet
anu

Antworten:

9

Sie können Ihr eigenes Meta-Feld mit einem Kontrollkästchen erstellen und nur Beiträge auswählen, die aktiviert wurden:

Fügen Sie den Metabox-Code hinzu

/* Define the custom box */
add_action( 'add_meta_boxes', 'my_slider_add_custom_box' );

/* Do something with the data entered */
add_action( 'save_post', 'my_slider_save_postdata' );

/* Adds a box to the main column on the Post and Page edit screens */
function my_slider_add_custom_box() {
    add_meta_box( 
        'my_slider_sectionid',
        __( 'my slider', 'my_slider_textdomain' ),
        'my_slider_inner_custom_box',
        'post' 
    );
}

/* Prints the box content */
function my_slider_inner_custom_box() {
    global $post;
    // Use nonce for verification
    wp_nonce_field( plugin_basename( __FILE__ ), 'my_slider_noncename' );
    $saved = get_post_meta($post->ID,'my_slider_field',true);
    // The actual fields for data entry
    echo '<label for="my_slider_field">';
    _e("Check the box if you want this post to show in the slider", 'myplugin_textdomain' );
    echo '</label> ';
    echo '<input type="checkbox" id="my_slider_field" name="my_slider_field" value="yes"';
    echo  ($saved) ? 'checked': '';
    echo '/>';
}

/* When the post is saved, saves our custom data */
function my_slider_save_postdata( $post_id ) {
      // verify if this is an auto save routine. 
      // If it is our form has not been submitted, so we dont want to do anything
      if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
          return;

      // verify this came from the our screen and with proper authorization,
      // because save_post can be triggered at other times

      if ( !wp_verify_nonce( $_POST['my_slider_noncename'], plugin_basename( __FILE__ ) ) )
          return;

      // OK, we're authenticated: we need to find and save the data
        $old = get_post_meta($post_id,'my_slider_field',true);
      if (isset($_POST['my_slider_field']) && $_POST['my_slider_field'] == "yes"){
            update_post_meta($post_id,'my_slider_field',true);
      }else{
        if (!empty($old)){
            delete_post_meta($post_id,'my_slider_field');
        }
      }
}

Abfrage von Posts, die überprüft wurden

$args = array(
    'posts_per_page' => -1
    'meta_query' => array(
        array(
            'key' => 'my_slider_field',
            'value' => true
        )
    );
$slider_query = new WP_Query($args);
Bainternet
quelle