web-dev-qa-db-fra.com

Comment puis-je extraire l'URL d'un lien depuis un article?

Je suis assez nouveau dans WordPress et j'ai le doute suivant.

J'ai une page qui prend des informations à partir d'une liste de messages qui appartiennent à une catégorie spécifique et affiche ces informations dans quelque chose comme un "tableau de bord".

J'ai donc ce code:

<?php
/**
 * The template for displaying all Parallax Templates.
 *
 * @package accesspress_parallax
 */
?>
    <div class="service-listing clearfix">
    <?php 
        $args = array(
            'cat' => $category,
            'posts_per_page' => -1
            );
        $count_service = 0;
        $query = new WP_Query($args);
        if($query->have_posts()):
            $i = 0;
            while ($query->have_posts()): $query->the_post();
            $i = $i + 0.25;
            $count_service++;
            $service_class = ($count_service % 2 == 0) ? "even wow fadeInRight" : "odd wow fadeInLeft";
        ?>

        <div class="clearfix service-list <?php echo $service_class; ?>" data-wow-delay="<?php echo $i; ?>s">
            <div class="service-image">
                <?php if(has_post_thumbnail()) : 
                $image = wp_get_attachment_image_src(get_post_thumbnail_id(get_the_ID()),'thumbnail'); ?>
                    <img src="<?php echo esc_url($image[0]); ?>" alt="<?php the_title(); ?>">
                <?php else: ?>
                    <img src="<?php echo get_template_directory_uri(); ?>/images/no-image.jpg" alt="<?php the_title(); ?>">
                <?php endif; ?>
            </div>

            <div class="service-detail">
                <h3><?php the_title(); ?></h3>
                <div class="service-content"><?php the_content(); ?></div>
            </div>
        </div>

        <?php 
        if($count_service % 2 == 0): ?>
            <div class="clearfix"></div>
        <?php endif;
        ?>

        <?php
            endwhile;
            wp_reset_postdata();
        endif;
    ?>
    </div><!-- #primary -->

Comme vous pouvez le constater dans le code précédent, le script récupère la liste des publications en effectuant une requête et interate sur cette liste en affichant cette publication de manière spécifique.

Ainsi, chaque contenu de message est affiché dans ma page par ces lignes:

<div class="service-detail">
    <h3><?php the_title(); ?></h3>
    <div class="service-content"><?php the_content(); ?></div>
</div>

Cela est rendu dans le navigateur sous la forme suivante:

<div class="service-detail">
    <h3>TEST</h3>

    <div class="service-content">
        <p><a href="https://it.wikipedia.org/wiki/Pagina_principale">test</a></p>
    </div>
</div>

Donc, comme vous pouvez le voir dans le div ayant class = "service-content" est contenu la valeur de contenu récupérée par le the_content () fonction.

Maintenant, je dois effectuer l'opération suivante.

Si la valeur récupérée par la fonction the_content () est un lien HTML (la valeur de la a haref tag) est inséré dans une variable (nommée url , sinon cette variable est définie sur null.

Puis-je le faire d'une manière simple? Existe-t-il une fonction WordPress qui récupère la liste des liens (dans mon cas spécifique, un seul) qui sont dans un post?

S'il n'existe pas, comment puis-je vérifier si le contenu de la publication est une URL et s'il est mis dans une variable?

Tnx

1
AndreaNobili

Existe-t-il une fonction WordPress qui récupère la liste des liens (dans mon cas spécifique, un seul) qui sont dans un post?

Découvrez le noyau wp_extract_urls() :

$urls = wp_extract_urls( $content );

qui extraira les URL de n'importe quel contenu donné.

Exemple

$content = 'Two test sites: <a href="http://foo.tld">Foo.tld</a> and https://bar.tld';
$urls    = wp_extract_urls( $content );
print_r( $urls  );

avec sortie:

Array
(
    [0] => http://foo.tld
    [1] => https://bar.tld
)
3
birgire