it-swarm.com.de

Wie liste ich alle externen URLs auf, die ich in meinem WordPress-Blog gepostet habe?

Ich möchte alle externen Links meiner Beiträge an einem Ort/in einer Datei auflisten. Wie kann ich das erreichen?

  • Ist dies über ein Plugin möglich?

  • Ist es möglich, dies mit einer integrierten WordPress-API zu erreichen?

  • Ist es möglich, dies mit einem kostenlosen Drittanbieter-Tool zu erreichen?

Welcher Ansatz sollte verfolgt werden, um dies zu erreichen?

1
Nadeem Khan

Erstellen Sie eine Seite mit den Namenslinks. Pages >> Add New in dein wordpress panel. Nennen Sie es einfach links und veröffentlichen Sie es. Siehe unten.

enter image description here

Gehen Sie nun zu Ihrem Themenordner wp-content\themes\YOUR_ACTIVE_THEME_FOLDER und erstellen Sie eine Seite page-links.php.

Und fügen Sie diesen Code in page-links.php ein

<?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();
?>

Jetzt müssen Sie den obigen Code ändern.

    //Write Site URL below.
//Don't write http:// or anything like that. just domain.com or domain.net
$_site_url = 'google.com';

Anstelle von $_site_url = 'google.com'; schreiben Sie Ihre eigene Domain. Stellen Sie sicher, es ist ohne www und ohne http: //

Schauen Sie sich die Seite an.

HINWEIS: Alle Seiten, die intern verlinkt sind, werden vermieden. Es werden nur Seiten angezeigt, die mit externen Sites verlinkt sind.

Passen Sie den Code an Ihre Bedürfnisse an.

4
Sudeep K Rana

Der obige Code hatte Paginierungsprobleme, als ich jede einzelne Seite analysieren wollte. Darauf aufbauend und mit einem Kicker für die Suche nach Links ohne "nofollow" -Attribute kam ich auf Folgendes:

<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>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'. $link.'</li>';
    }
  }

endforeach;
wp_reset_postdata(); 

?>
</ol>
1
pennstump