web-dev-qa-db-fra.com

Le filtre personnalisé pour the_content ne fonctionne pas correctement

===== CE POST A ÉTÉ MIS À JOUR ===== DÉFILEZ VERS LE BAS POUR LIRE LA MISE À JOUR!

Hier, j'ai posé la question à un homme du nom de Tim qui était assez gentil pour se lancer. Il m'a aidé à écrire un filtre qui me permettrait d'ajouter à the_content une méta-boîte personnalisée créée à l'aide de champs personnalisés avancés.

Tom m'a traversé presque tout le processus, mais n'a malheureusement pas pu m'aider à le terminer. Je ne suis pas un programmeur professionnel, mais j'ai essayé (ces dernières heures) de déchiffrer ce que son code signifie et pourquoi il pourrait ne pas réussir à extraire le texte de l'arrière-plan ... Et je n'arrive pas à courtiser .

Voici le lien vers mon post précédent: Cela vous prend du début à maintenant

et voici le code que j'ai en ce moment:

function weedub_affiliate_filter($content) {
$string_to_add = '';
// only add on single posts with aff checkbox and label
if (is_single() && get_field('affiliate_checkbox') && get_field('affiliate_label')) {
    $string_to_add = $string_to_add . '
<div class="weedub_meta_box">
    <div class="weedub_meta_title">
        <span>Weedub Product Recommendations</span>
    </div>';
    while (the_repeater_field('affiliate_label')) {
        // list affiliates
        $string_to_add = $string_to_add . '
        <div class="weedub_meta_item">
            <div class="weedub_meta_label">
                <span>' . get_sub_field('label_affiliate') . '</span>
            </div>
            <div class="weedub_meta_value">
                <a href="' . get_sub_field('link_affiliate') . '" target="_blank" alt="reference link" title="reference link">
                                    ' . get_sub_field('text_for_link_affiliate') . '</a>
            </div>
        </div>';
    }
    $string_to_add = $string_to_add . '</div>';
}
$content = $content . $string_to_add;
return $content;

}

add_filter('the_content', 'weedub_affiliate_filter', 9);

Cet extrait est presque présent, il s'affiche au bon endroit et il reconnaît que j'ai saisi 3 lignes de champs sur le backend, mais qu'il n'imprime pas le texte à partir des champs. exemple (faites défiler la page jusqu'à ce que vous voyiez où j'ai écrit END OF THE_CONTENT en cas de titre): Recherchez la zone "Recommandations de produit Weedub"

Toute aide est tellement appréciée! MERCI -Aaron

===== UPDATE ====

Donc, j'ai découvert que le code affiche les valeurs, mais il les imprime AVANT the_content, et le balisage APRES the_content !!

regardez juste avant que le contenu ne commence réellement (après l'image sélectionnée) et vous verrez la chaîne de valeurs ... puis faites défiler jusqu'à la fin du contenu et vous verrez le balisage pour la méta-boîte, (intitulé "recommandations de produits weedub" ) voici le lien à nouveau: lien vers un seul message

Je ne peux pas comprendre où je me trompe ici !!

3
Klyde

Je ne sais pas exactement ce qui s'est passé, mais ça a fonctionné! Tout nettoyé et prêt à utiliser ... Voilà les gars:

 /**
* 
* This is the filter that adds the affiliate box to the end of the article
* 
*/
add_filter('the_content', 'weedub_affiliate_filter', 9);
function weedub_affiliate_filter($content) 
    {
        $string_to_add = '';
        // only add on single posts with aff checkbox and label
        if (is_single() && get_field('affiliate_checkbox') && get_field('affiliate_label')) 
            {
                $string_to_add .= '<div class="weedub_meta_box"><div class="weedub_meta_title"><span>Weedub Product Recommendations</span></div>';
                while (the_repeater_field('affiliate_label')) 
                    {   
                        // list affiliates
                        $string_to_add .= '<div class="weedub_meta_item"><div class="weedub_meta_label"><span>' . get_sub_field('label_affiliate') . '</span></div><div class="weedub_meta_value"><a href="' . get_sub_field('link_affiliate') . '" target="_blank" alt="reference link" title="reference link">' . get_sub_field('text_for_link_affiliate') . '</a></div></div>';
                    }
                $string_to_add .= '</div>';
            }
        $content .= $string_to_add;

        return $content;
    }

Faites-moi savoir si quelqu'un peut y remédier ou l'optimiser, car je suis sûr qu'il pourrait être modifié davantage.

Merci à @tim pour la majorité de ce code.

2
Klyde