web-dev-qa-db-fra.com

Insertion d'une balise HTML avec ACF dans un shortcode

Permettez-moi de commencer par dire que je fais habituellement beaucoup de recherches avant de demander publiquement de l'aide - en raison de la probabilité que des informations soient déjà sur le Web - bien que j'aie fait plusieurs jours de recherche, etc. Je suis toujours dans l'angoisse ...

J'utilise Wordpress avec le plugin Advanced Custom Fields - j'ai pu lui faire montrer l'image sur ma page d'accueil en utilisant un simple code HTML

<img src="[acf field='image' post_id=''. $post_id .'']" />

Où j'ai créé un champ personnalisé appelé "image". Maintenant Je veux créer un shortcode pour afficher ce lien si possible? J'ai traversé beaucoup de possibilités telles que;

J'ai essayé cela aussi;

<?php
function my_shortcode() {
    $output = '';
    $output.= '<img src="[acf field='image' post_id=''. $post_id .'']" />';
    return $output;
}

N'a pas pris ... alors je suis allé pour le dernier que j'ai pu trouver sur le web;

    function my_shortcode() {
    ob_start();
    ?> <HTML> <img src="[acf field='image' post_id=''. $post_id .'']" /> <?php
    return ob_get_clean();
}

Ce qui a abouti à quelque chose comme ça sur mon site - résultat

Je suis vraiment hors de ma profondeur ici les gars ... Je serais vraiment heureux si quelqu'un serait prêt à m'aider un peu!

Merci d'avance!

1
Pr0metheus

Vous devez utiliser do_shortcode() pour exécuter des codes courts dans votre chaîne

Le code complet devrait être comme ça

<?php
function my_shortcode( $atts ) {
    $atts = shortcode_atts( array(
        'post_id' => '', // Default value.
    ), $atts );

    $output = '[acf field="image" post_id="' . $atts['post_id'] . '"]';
    $output = do_shortcode( $output );
    $output = '<img src="' . $output . '" />';
    return $output;
}

add_shortcode('my_link', 'my_shortcode');

Usage:

[my_link post_id="xxx"]

où xxx est l'identifiant du message requis.

1
KAGG Design

 enter image description here 

function my_shortcode(){
return '<img src="[acf field='image' post_id=''. $post_id .'']" />';
}
add_shortcode('image','my_shortcode');
0
Dharmishtha Patel