Comment pouvez-vous déterminer si une image est simplement attaché ou a effectivement été inséré dans un poste?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/4261

  •  16-10-2019
  •  | 
  •  

Question

Ours avec moi. Je vous promets qu'il ya une question quand je suis fait:)

Dans WordPress, vous pouvez télécharger des images lors de la modification d'un poste et la possibilité de les insérer dans le contenu (ou non).

Peu importe, l'image semble être « attaché » au poste lors de l'affichage du gestionnaire des médias.

Est-ce que WordPress placer toutes les références dans la base de données pour différencier une image qui a été attaché et également inséré dans le contenu du message? Ou à l'inverse, une image qui a été attaché à un poste, mais n'a pas été inséré dans le contenu post?

Pourquoi est-ce que je veux savoir?

Je voudrais permettre à l'utilisateur de télécharger des images qui seront écrites au-dessus du contenu après (une rangée d'images) en les téléchargeant simplement via l'assistant de pièce jointe.

Mais ils peuvent aussi télécharger des images qu'ils ne veulent apparaître dans le contenu, ils cliquent sur « Insérer dans le post » dans ce cas. À moins d'avoir une certaine façon de différencier les images qui ont été effectivement insérées vs les images qui ont été simplement attachés, ils obtiendront des images en double, l'un dans le poste et une au sommet du poteau.

Les réflexions sur la façon de le faire?

Je suppose une autre approche serait d'ajouter une case à cocher l'éditeur de pièces jointes pour signaler une image pour l'affichage en tant que pièce jointe poste d'en-tête, puis effectuez une recherche pour les images jointes au poste avec le drapeau spécial.

Était-ce utile?

La solution

nextgen galerie plug-in pour faire quelque chose comme ça. En fait, je l'ai utilisé que la moitié de ce qui suit:. Les ajouts de l'utilisateur final des images grâce à l'interface du plug-in, mais l'affichage réel à l'intérieur du poste est fait avec un shortcode personnalisé

Je ne pense pas qu'il y ait un moyen de savoir si une pièce jointe a été insérée dans le poste, à court d'examiner la source de contenu après.

Autres conseils

** extrait Mise à jour: avait été en utilisant ID de poste global $ et non le passé ID, il prendrait des mises à jour de couple avant la balise meta a été ajouté aux images de contenu. Maintenant, cela fonctionne.

Je besoin d'une solution similaire et à la suite de suggestions de Jan Fabry je suis venu avec une fonction (certes inélégante, mais il fonctionne):

    /* Add meta value to distinguish inserted images from other attached images - lionassociates.com */

    function insertedImage_save_meta($post_id) {
        $upPost = get_post($post_id);

        $rawPostDoc = new DOMDocument();
        @$rawPostDoc->loadHTML($upPost->post_content);                     
        $imgs = $rawPostDoc->getElementsByTagName('img');
        $i = 0;
        foreach($imgs as $img){
            $imgIDStr = substr($img->getAttribute('class'), (stripos($img->getAttribute('class'),'wp-image-')+9), 6);
            $imgID = preg_replace("[^0-9]", '', $imgIDStr);
            if($imgID != '') {
                if(get_post_meta($imgID, '_inserted-image', false))
                    update_post_meta($imgID, '_inserted-image', 'yes');
                else
                    add_post_meta($imgID, '_inserted-image', 'yes');
            }
            $i++;    
        }
    }
    /* Do something with the data entered */
    add_action('save_post', 'insertedImage_save_meta');

qui obtient collé dans (functions.php). Puis-je utiliser les pièces jointes valeur méta dans une boucle où je crachant mes images (par Jan Fabry):

    $imgs = get_posts(array('post_parent'=>get_the_id(), 'numberposts'=>-1, 'post_type'=>'attachment', 'post_mime_type'=>'image'));
    if($imgs[0]) {
        foreach($imgs as $img) {
            if(!get_post_meta($img->ID, '_inserted-image', true))
            echo wp_get_attachment_image($img->ID, 'sec-slide'); //'sec-slide' is just the name of a custom image size
        }
    }

Cette recrache toutes les images jointes qui ne sont pas insérées dans le contenu message.

Kemp dit, il n'y a pas de différence dans la base de données entre une image qui a été attaché, et qui est effectivement introduit dans le contenu. Je scanner le contenu (en poste à sauver, pas à chaque fois que vous l'afficher) et définir un attribut de métadonnées supplémentaires pour joint-mais-pas-images affichées. Rappelez-vous de vérifier les galeries aussi:. Ils sont insérés avec un shortcode, il est donc pas toujours juste une recherche de balises <img>

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top