web-dev-qa-db-fra.com

Quel est le crochet de filtre pour le contenu des champs personnalisés?

Le code suivant masque la sortie "the_content"

add_filter( "the_content", "cp_module_pcontent_post_content" );
function cp_module_pcontent_post_content($content){
        global $post;
        global $cp_module_pcontent_hide;
        if(!in_array($post->ID,(array)$cp_module_pcontent_hide)){
            return $content;
        }
        $c = '<p>' . get_option('cp_module_pcontent_text_pay') . '</p>';
        $c .= apply_filters('cp_module_pcontent_post_content_'.$post->ID, '');
        $c .= '<form method="post">';
        $c .= '<input type="hidden" name="cp_module_pcontent_pay" value="'.$post->ID.'" />';
        $c .= '<p><input type="submit" value="'.get_option('cp_module_pcontent_text_button').'" /></p>';
        $c .= '</form>';
        if(!is_user_logged_in()){
            $c = get_option('cp_module_pcontent_text_logout');
        }
        $c = str_replace('%points%',cp_formatPoints(get_post_meta($post->ID,'cp_pcontent_points', 1)),$c);
        return $c;
    }

Vérifiez ces captures d'écran.

Si l'utilisateur non connecté l'affiche,

enter image description here

Si l'utilisateur connecté l'affiche comme ceci

enter image description here

Veuillez noter que seule la sortie the_content est masquée

Voici mon problème. J'utilise le plugin champs magiques. C'est un plugin pour créer des champs personnalisés.

Par exemple, voici le code utilisé par mon fichier single.php.

    <div class="entry-content">
            <?php the_content(); ?>
    </div>

 <!-- magic fields plugin code starts -->
    <div class="custom-content">
            <?php if (function_exists('get_field')) { 
                    $requirements = get_field('requirements_requirements');
                        if($requirements){  
                            foreach($requirements as $requirement){
                            echo $requirement;
                            } 
                        } 
                    } ?>

    </div>
  <!-- magic fields plugin code ends -->

La sortie du plugin Magic fields n'est pas cachée ici
Je souhaite masquer la sortie du plugin Champs magiques au lieu de la sortie the_content. Je veux dire requirements au lieu de the_content.

Quand je remplace "the_content" par "the_title", il cache le titre.

Par exemple comme ça

add_filter ("the_title", "cp_module_pcontent_post_content"); // cache le titre

add_filter ("the_tags", "cp_module_pcontent_post_content"); // cache les tags

add_filter ("wp_list_categories", "cp_module_pcontent_post_content"); // cache des catégories

add_filter ("???????", "cp_module_pcontent_post_content"); // cache un groupe de champs magiques

Pour masquer ces exigences, je dois remplacer

add_filter( "the_content", "cp_module_pcontent_post_content" );

à

add_filter( "xxxxxxxx", "cp_module_pcontent_post_content" );

Pouvez-vous me dire quelle est cette xxxxxxxx?

Merci

1
Giri

OK j'ai trouvé la réponse. Merci à @ t31os et son code .

C'est ce que j'ai fait.

Remplacé cette ligne

echo $requirement;

avec

echo apply_filters('requirement','$requirement');

Et puis encore j'ai remplacé cette première ligne

add_filter( "the_content", "cp_module_pcontent_post_content" );

avec

add_filter( "requirement", "cp_module_pcontent_post_content" );

Voila sa fonctionne parfaitement maintenant. :)

0
Giri

Puisque les champs personnalisés sont conservés dans la table meta, vous pouvez probablement simplement supprimer cette ligne:

 $c = str_replace('%points%',cp_formatPoints(get_post_meta($post->ID,'cp_pcontent_points', 1)),$c);

Vous pouvez également utiliser un booléen en tant que paramètre pour ne pas exécuter cette ligne de code.

HTH

0
rexposadas