Je veux lister tous les liens externes de mes messages dans un seul endroit/fichier. Comment puis-je atteindre cet objectif?
Est-il possible d'y parvenir via un plugin?
Est-il possible d'y parvenir avec une API wordpress intégrée?
Est-il possible d'y parvenir via un outil tiers gratuit?
Quelle approche faut-il suivre pour y parvenir?
Créez une page avec les liens de noms. Pages >> Add New
dans votre panneau wordpress. Nommez-le simplement links
et publiez. Voir ci-dessous.
Allez maintenant dans votre dossier de thèmes wp-content\themes\YOUR_ACTIVE_THEME_FOLDER
et créez une page page-links.php
.
Et collez ce code dans page-links.php
<?php
$the_query = new WP_Query(array('post_type' => 'post'));
while($the_query->have_posts()):
$the_query->the_post();
$_post_id = get_the_id();
//Write Site URL below.
//Don't write http:// or anything like that. just domain.com or domain.net
$_site_url = 'google.com';
//Getting Post content
$_post_content = get_post_field( 'post_content', $_post_id);
$site_parts = explode('.',$_site_url);
$site_suffix = '.'.$site_parts[1];
//Using regular expression to match hyperlink
preg_match_all('|<a.*(?=href=\"([^\"]*)\")[^>]*>([^<]*)</a>|i', $_post_content, $match);
foreach($match[0] as $link){
//Filtering out internal links
$parts = explode($site_suffix, $link);
$domain = explode('//',$parts[0]);
//echo $domain[1];
if ($domain[1] != 'www.'.$site_parts[0] && $domain[1] != $site_parts[0] ){
echo $link.'<br>';
}
}
endwhile;
wp_reset_postdata();
?>
Vous devez maintenant modifier le code ci-dessus.
//Write Site URL below.
//Don't write http:// or anything like that. just domain.com or domain.net
$_site_url = 'google.com';
À la place de $_site_url = 'google.com';
, écrivez votre propre domaine. Assurez-vous que c'est sans www et sans http: //
Regardez la page.
REMARQUE: toutes les pages liées en interne sont évitées, seules les pages liées à des sites externes seront visibles.
Personnaliser le code pour le nécessaire.
Le code ci-dessus avait des problèmes de pagination lorsque je voulais analyser chaque page. Donc, en partant de ce qui précède, plus d’un kicker pour rechercher des liens sans attributs 'nofollow', j’ai proposé ce qui suit:
<ol>
<?php
global $post;
//Write Site URL below.
//Don't write http:// or anything like that. just domain.com or domain.net
$_site_url = 'google.com';
$args = array(
'posts_per_page' => 9999999999,
'offset' => 0,
'category' => '',
'category_name' => '',
'orderby' => 'ID',
'order' => 'DESC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' => '',
'post_type' => 'post',
'post_mime_type' => '',
'post_parent' => '',
'author' => '',
'author_name' => '',
'post_status' => 'publish',
'suppress_filters' => true
);
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post);
//Get Post content
$_post_content = get_the_content();
$site_parts = explode('.',$_site_url);
$site_suffix = '.'.$site_parts[1];
//Using regular expression to match hyperlink
preg_match_all('|<a.*(?=href=\"([^\"]*)\")[^>]*>([^<]*)</a>|i', $_post_content, $match);
foreach($match[0] as $link){
//Filtering out internal links
$parts = explode($site_suffix, $link);
$domain = explode('//',$parts[0]);
//echo $domain[1];
if ($domain[1] != 'www.'.$site_parts[0] && $domain[1] != $site_parts[0] && strpos($link, 'nofollow') === FALSE){
echo '<li><a href="'.get_permalink($post->ID) . '">' . get_the_title() .'</a>, '. $link.'</li>';
}
}
endforeach;
wp_reset_postdata();
?>
</ol>