it-swarm.com.de

Verwenden Sie einen Anhang in mehreren Posts

Ich habe einen Anhang in einem Beitrag und möchte ihn mit der API WP an einen anderen Beitrag anhängen, ohne ihn vom ersten Beitrag zu trennen.

3
thanassis

Das ist nicht so einfach. Ändern Sie in meinem Code das Feld post_parent aus dem Anhang mit der neuen Beitrags-ID.

//take all image-attachments from a post to create post for each 
    $images =& get_children( array (
                        'post_parent' => $event_id,
                        'post_type' => 'attachment',
                        'post_mime_type' => 'image'
                    ));


            if ( empty($images) ) {
                // no attachments here
            } else { 
                //handle each attachment
                foreach ( $images as $attachment_id => $attachment ) {

                    $this->addPost( $post_id, $attachment_id, $attachment );
                }
....

...
function addPost($post_id, $attach_id, $attach)
        {
            // Create post object

            $new_post = array(
            'post_title'    => 'title',
            'post_status'   => 'publish',
            'post_author'   => 1,
            'post_type'     => 'post'
            );

            // Insert the post into the database
            // create new post that want to reattach the attatchment


            $this->unhookFromSavePost(); // see http://codex.wordpress.org/Plugin_API/Action_Reference/save_post#Avoiding_infinite_loops
            $new_post_id = wp_insert_post( $new_post ); //get post's id 
            $this->hookToSavePost();
            $attach->post_parent = $new_post_id; // post_id 
            $newAddedAttachment = wp_insert_attachment( $attach );

Wenn Sie den Anhang duplizieren und in weiteren Posts verwenden möchten, müssen Sie die folgenden Schritte ausführen: wp_insert_attachment Sie können $ attach auch in ein neues Objekt kopieren, müssen jedoch die ID-Eigenschaft dieses Objekts deaktivieren .

$new_attach = $attach;
$new_attach->post_parent = $new_post_id;
unset($new_attach[0]);     // unset first property or unset($new_attach[ID]);
wp_insert_attachment( $new_attach);
2
thanassis

Wenn Sie sich innerhalb des Mediums befinden, das im Post-Bearbeitungsbildschirm hochgeladen wurde, suchen Sie einfach nach Ihrem zuvor angehängten Medium und binden Sie es in Ihren neuen Post ein.

Die Beziehung zwischen Beiträgen und Anhängen bleibt in der Datenbank erhalten. Während ein Anhang nur zu einem Beitrag gehören kann, kann er ohne Bedenken in viele Beiträge eingebettet werden.

4
MichaelJames