PingCrawl, WordPress plugin

05Aug08

PingCrawl Version2 Can be found Here

So, I was working with Eli about a cool & helpful plugin that we could develop & use for our projects and we { more he than I } came up with the idea of PingCrawl. Basically here is the simple theory of operation:

Theory Of Operation

  • The plugin will listen to anytime a post is saved, published, updated, etc.
  • The plugin on execution time will find all the tags on the post and perform the following per tag:
    • Use Google API to check for ( 35 ) results with the tag name.
    • With the ( 35 ) results it loops through them and performs the following
      • Does the result have a pingback meta tag? 
      • Does the result have trackback somewhere in the source
      • (if yes to both) it stores the pingback xmlrpc location in memory.
      • (if no to either) we skip that record and move to the next.
      • Once their are 5 legit pingable servers we then append their links to the post we currently added.
      • We then retrieve the xmlrpc urls from memory, and execute a pingback.ping against the xmlrpc as defined in the pingback 1.0 spec. (due to the nature of pingbacks and php it is not a 100% guarantee. A lot of dependencies on state, server responses, headers, etc.)

Their are built in features such as caching google’s recordsets per tag, so you don’t have to make request out to google for the same use. And logic to know if you’ve already “PingCrawled” a post then on edit to ignore it, etc w/ a built in polling system.

Installation:

  1. Download Plugin
  2. Put file in the wp-content/plugins directory of your wordpress installation
  3. Login to your blog dashboard
  4. Click on Plugins
  5. Click on Active to the Right of PingCrawl in the list
  6. Make a Post
Note ( because of the nature of the script any one tag can make as many as 41 HTTP request and storing source code into memory to run regular expressions against. Because of this I would try to limit my tags to no more than 3 (123 HTTP Request). Use more at your own risk.
This is very beta, very my first wordpress plugin, etc. etc. So I’d love any suggestions, feedback, concerns, etc. 

TODO

  1. Some ping-backs aren’t going through that should, need to make sure algorithm isn’t too tight.
  2. php4 compatibility.
    1. Write alternative XML parse lib for php4.
  3. If no tags, auto populate tags based off content of post.
  4. Check current php settings for file_get_contents if not allowed use cURL.

Update

Their is a newer version of PingCrawl which you should use, Eli posted an older version on his blog. Silly Goose that he is!

Download Pingcrawl 1.02 (php4 friendly)

PingCrawl Version2 Can be found Here

Also I wrote this on php5+ assuming you are using it too. If you are using php 4 let me know, I’ll try to port it over in the next couple of days. Hope this helps some people!

Revisions:

  1. 8/6/2008 – Made Pingbacks more stable and secure, with higher probability of success
  2. 8/6/2008 – Reduced seeding from 1/6 to 1/11 ratio.
  3. 8/7/2008 – Attempt #1 at php4 Friendly

PingCrawl Version2 Can be found Here



135 Responses to “PingCrawl, WordPress plugin”

  1. 1 Wade

    Hey, the plugin looks great but I’m having troubles activating the plugin. When I click activate I get the error:

    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /home/My_Website/public_html/wp-content/plugins/PingCrawl/PingCrawl.php on line 12

    Any suggestions? I updated to the most recent version of WP in hopes that it would make the plugin work but no such luck.

    Thank you for any help.

  2. 2 cs

    hey, great concept here. i got an error message when trying to activate the plugin on wp version 2.6

    Plugin could not be activated because it triggered a fatal error.

    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /blog/wp-content/plugins/PingCrawl.php on line 12

    here’s a link that might force comment moderation delete this message

  3. Hey Wade & CS what version of PHP are you guys running? Make sure you grab the new version that I just posted! 🙂

  4. Try to download the newest version.

  5. Hi, Joshteam 🙂
    I haven’t tested the plugin yet but I like the idea and I’ll definitely give it a try.
    There is one think though that is bothering me.
    If I post I’ll limit the tags to three, but if someone else post might not be that responsible and can post with even ten tags.
    Can you make the plugin to limit the pings on certain number of tags (the first three let say)?

    Thanks for your work.

  6. i get a
    Fatal error: Call to undefined function: simplexml_load_string() in pingcrawl.php on line 67

    when i try to publish a post for the latest version

    Nice plugin 🙂

  7. hey josh,

    thanks for sharing this great plug-in!

    when installing this on a php4/wp6-machine i get the following error when saving/publishing a post:

    Fatal error: Call to undefined function: simplexml_load_string() in /wp-content/plugins/pingcrawl.php on line 67

    afaik simplexml_load_string() is a php5-only function. hope this helps building a php4-friendly version.

  8. 8 tom

    Setup: PHP:5. WP:2.6. Script:latest version

    Hi Josh, got a problem with this and wondered if you could help.

    The pb_ tables are not created by the script. So I have created them manually. After making a post the pb_feeds table does have data inserted into it. The pb_pingbacks table does not. No data is appended on to the bottom of the original post.

    Am I doing something wrong?

  9. Truden, you can post as many tags as you want. And I can’ talk speak to your actual seo strategy implementation, but from me and Eli’s testing 3 was the best medium. But by all means, try more! Let me know how it works for you.

  10. Treadmil, Michael I tried really hard last night (till 3am) porting it from php5 to php4, but you just reminded me Simple XML ( which I am using for rss parsing ) is a php5 only object. I will need to write my own xml parser for all your throw back developers still using php 4!

  11. Tom, are you sure you are using the latest version?

  12. Josh,

    you don’t need to write a XML parser for PHP4. See this page for XML parsing with PHP3 or higher: http://www.developertutorials.com/tutorials/php/parsing-xml-using-php4-050816/page4.html

  13. 13 tom

    Hey Josh

    I’m using the version linked above (although just noticed it still says V1.0 in the file – – is this correct for the updated version).

    I figured out why the tables where not being created – it was a permissions problem – but I still do not get any data in the pb_pingbacks table or appended to the post.

  14. yeah, you’re right. php4 is pretty outdated and should be abandoned.

    i was searching for the simplexml functions for php4 and found this small library for php4:
    http://www.ister.org/code/simplexml44/index.html

    maybe you can use this as a substitute for the missing functions?

  15. 15 CS

    josh, i downloaded from your link on this post and the plugin activates successfully now.

    i wrote a post with 3 tags, clicked publish and got this error:

    Fatal error: Call to undefined function: simplexml_load_string() in /homepages/29/d147646393/htdocs/vee-strom.com/blog/wp-content/plugins/pingcrawl.php on line 67

    looks like its the php4 problem you already have noted here.

  16. Yeah CS, I am using a php5 only library to parse out the xml on line 67:

    $rss = simplexml_load_string( @file_get_contents( $aUri ) );

    However, if you have t he time try using the library Michael stated above as a replacement there. I am going to try and incorporate that adjustment over the weekend, but have quite a bit of projects. So if someone wants to attempt that! 🙂

  17. 17 CS

    i wonder if it would be easier (and possible) to use htaccess to tell only pingcrawl.php to use php5? my host has both installed, and i’ve used this line to make all php files use php5 instead of 4….

    AddType x-mapp-php5 .php

    i tried to make this happen and failed with this in htaccess…

    AddType x-mapp-php5 .php

    i put that file in my root and in the plugins folder ftl

  18. 18 CS

    crap my comment got butchered.

    <Files “pingcrawl.php”>
    AddType x-mapp-php5 .php
    </Files>

  19. Hi there, sorry to bother you, but I am a novice. It is installed and working, but i would like to reduce the font size of the link outputs on my blog. What part of the PHP file do i need to edit to change the font size?

  20. Hey DoctorTwisted, no problem. I am actually just use the css of the current them you have installed. In the css modify these things

    The Tile: Related Blogs on Whatever is a h4 element.
    The list of elements in a ul class called = “pc_pingback”
    so in your css you can do this:

    h4, ul.pc_pingback { font-size: .8em; }

    this should reduce the section by about 25-30%.

    Hope this helps!

  21. 21 Rock

    so I checked my host and it says php 5.2.6 is the current version but when I make a new post and publish it I still get this error “Fatal error: Call to undefined function: simplexml_load_string() in /wp-content/plugins/pingcrawl.php on line 67”.

    The post still publishes however.

  22. Rock, means they don’t have SimpleXML installed; here is what someone else did:

    Get this library, and include it at the top of the pingcrawl file:
    http://www.ister.org/code/simplexml44/index.html

    Then below the include file but above everything else do:


    if ( ! function_exists( 'simplexml_load_string' ) ) {
    require_once('simplexml/IsterXmlSimpleXMLImpl.php' );
    function simplexml_load_string( $string ) {
    return IsterXmlSimpleXMLImpl::load_string( $string );
    }
    }

  23. 23 Eric

    I am also getting the error Rock is getting using php 5 & the latest version of wordpress, however, I dont understand what you mean by “include the library at the top of the pingcrawl file”

    The library is a file full of folders and more files. How do you include it?

  24. 24 eeeeeeeee

    It all seems to run fine, except the trackbacks dont appear on the other websites. It posted to about 5 other websites, but when I visit them, no trackbacks are there.
    I thought it might be a moderation thing, but its weird that happened with all five.

    I also notice that my “custom fields” do not list any sites (pinging normally causes a site to be listed there I thought: http://www.optiniche.com/blog/117/wordpress-trackback-tutorial/)

  25. 25 Thomas

    I’ve activated PHP5 on my site with a htaccess fix that my provider offers. But I get this error when posting:

    Fatal error: Call to a member function asXML() on a non-object in …/pingcrawl.php on line 68

  26. @Joshteam:
    I guess I have problem expressing myself in English 😀

    My concern is: because in my weblog will post many authors, someone may use ten tags (or anything more than three) let say.
    That may cause problem for my server due to the big number of tags to search for and to ping.
    Can I limit the tag search and pings to the first three tags?

    I haven’t explored the code but from the quick check I see a line:
    $numberOfMaxLinksToPing = 5;
    Does it mean that on every tag my weblog will ping five links if available?
    On ten tags with 100% success that would be fifty pings and that is quite a lot to be handled from a server with an average performance.
    What if two or more users are posting in the same time?

  27. 27 raicah

    Fatal error: Call to a member function on a non-object in /home/www/saouthcafe.freehostia.com/wp-content/plugins/class/IsterXmlSimpleXMLImpl.php on line 155

  28. 28 eeeeee

    trackbacks are not working. when i make a post on my blog, my trackback doesnt show up on the other blog. on my first run, it did list 5 other blogs on my site. how can this be fixed?

  29. Thanks Joshteam, the font on my site is now nice and small! And after installation of the plugin. my visitors doubled from 25 to 50! Now I just have to work out how to keep them there for over 30 seconds

  30. 30 eeeeee

    i will give you a small donation if you can help me fix this.

  31. eeeee, pingbacks often go to moderation to be approved. Too many other people have this working for me to think it’s a problem with the plugin. Make a few more post, and try to keep the tags very specific & unique.

    Keep me posted.

  32. 32 meditationguide

    hello
    i got error like in comment 20, then installed SimpleXML, now i have the follow error:
    Fatal error: Call to a member function asXML() on a non-object in /homepages/28/d238791283/htdocs/ipview/wp/wp-content/plugins/pingcrawl/pingcrawl.php on line 76

  33. Hey Josh, i love the idea and work behind the plugin, great job!

    However i keep getting a gateway timeout on the script while trying to post, even if i only use 2 or 1 tags. Have you any idea why this could be?

    (Admitted, my host is a shared host, maybe because of that?)

    Respect from Bangkok, and thank you in advance

    – Chris

  34. 34 Rock

    I got this working on one of my blogs, great stuff.

    However, I am also running a related posts plugin for internal linking. The PingCrawl results are appearing on top of my related posts. Both plugins do not modify the template code, so I was wondering how I could change it so my related posts on my own blog appear above the pingcrawl results?

  35. Josh team – something odd happened. You will see on my site (slightly adult so no need to visit if that offends) that when i posted about the cheerleaders in the elevator the plugin worked great. i didnt change anything, and on my next two posts it didnt work at all (they are the ones about the urine drinking man in ohio and the war in georgia). On wordpress where i add tags they show up on my wppanel, but not on my blog! instead my categories display as tags and my tags dont show up except on the admin panel. and this only happened since the plugin i believe. I tried deactivating and activating and no success.

    I am a nube so this could all be a basic mistake on my part, but i just thought i’d let you know!

  36. DoctorTwisted, make sure that you specifically write tags. I ignore the category but wordpress treats that as a Tag even though it’s not -really- a tag.

  37. Rock, you need to specify a higher “priority” in your other plugin.


    add_action ( 'hook_name', 'your_function_name', [priority], [accepted_args] );

    the third parameter is when it should run, try setting that on your other plugin to like 20 or something.

    let me know if I can help further.

  38. 38 transparentopac

    Hmmm…no joy here…I post, get blank page at /wp-admin/post.php

    The post appears, but the plugin hasn’t had the desired effect 😦

  39. 39 Rock

    ok, here is the code you point it. which parameter should I change?

    add_action(‘admin_menu’,’yarpp_admin_menu’);
    add_action(‘admin_print_scripts’,’yarpp_upgrade_check’);
    add_filter(‘the_content’,’yarpp_default’,1200);
    register_activation_hook(__FILE__,’yarpp_activate’);

    // new in 2.0: add as a widget
    add_action(‘plugins_loaded’, ‘widget_yarpp_init’);

  40. 40 raimis300

    Hey!

    function doPingback( $url , $blogu )
    {
    require_once (ABSPATH . WPINC . ‘/class-IXR.php’);
    global $wpdb;
    $post = “http://saouthcafe.freehostia.com/?p=35”;
    $bu = “” . $blogu;
    $client = new IXR_Client( $url );
    if(!$client->query( ‘pingback.ping, $post , $bu ))
    {
    echo “aiziet”;
    //48 means the trackback/pingback has already been registered
    if($client->getErrorCode() != ’48’)
    {
    echo “jau ir”;
    //var_dump(‘Error on ‘ . $url . ‘: pingback.ping(‘. $post->guid .’, ‘. $bu . ‘)’);
    return false;
    }
    }
    //file_put_contents(ABSPATH . ‘/wp-content/plugins/responses.xml’, “\n\n — \n” . $blogu .’: ‘. var_dump($client->getResponse()));
    return $client->getResponse();
    }

    require(‘./wp-blog-header.php’);

    doPingback( “http://saouthcafe.freehostia.com/?p=35” , “http://raimis300.wordpress.com/2008/07/25/titlehere-2” );
    doPingback( “http://raimis300.wordpress.com/2008/07/25/titlehere-2” , “http://saouthcafe.freehostia.com/?p=35” );

    I tired making manual pingback… Am I doing this right ?

  41. 41 tom

    transparentopac, that’s what i get too. Just a blanl page now after posting.

  42. Ramis300, make sure you are using the latest version:

    here is the method signature of the latest version.
    function doPingback( $url , $blogu, $post ) {

    and the actual call:
    $this->doPingback( $xmlrpc, $link, $opost );

  43. tom, transparentopac: I encountered random blank pages which seemed to be tag dependent. Change the tag to something very general, and only one and see if it still happens.

  44. 44 raimis300

    And whats the $opost variable ? Permalink ?

  45. $opost is the original post object before modification occurred.

  46. Hi,
    I’ve modoficated your code to work with cURL. There are two function which is using file_get_contents. Here are my mods:

    protected function getRss( $tag , $amount ) {
    global $wpdb;
    $sql = 'SELECT pbr.rss FROM '. $wpdb->prefix .'pb_feeds pbr WHERE tag = "' . $wpdb->escape($tag) .'" ORDER BY id DESC LIMIT 1';
    $rss = $wpdb->get_var( $sql );
    if(is_null($rss)) {
    $bUri = 'http://blogsearch.google.com/blogsearch_feeds?hl=en&q=%s&ie=utf-8&num=%d&output=rss';
    $tagUri = str_replace( ' ', '+', $tag );
    $aUri = sprintf( $bUri, $tagUri, $amount );
    $ch = curl_init();
    $timeout = 5; // set to zero for no timeout
    curl_setopt ($ch, CURLOPT_URL, $aUri);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file_contents = curl_exec($ch);
    curl_close($ch);

    $rss = simplexml_load_string( @$file_contents );
    $sql = 'INSERT INTO ' . $wpdb->prefix .'pb_feeds SET tag = "' . $wpdb->escape($tag) .'", rss = "' . $wpdb->escape($rss->asXML()) . '"';
    $wpdb->query( $sql );
    } else {
    $rss = simplexml_load_string( $rss );
    }
    return $rss;
    }

    and here is the another one:

    protected function findPingback( $url ) {
    $ch = curl_init();
    $timeout = 5; // set to zero for no timeout
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file_contents = curl_exec($ch);
    curl_close($ch);

    @$source = $file_contents;
    $pattern = '';
    preg_match( $pattern, $source, $matches );
    if ( count( $matches ) > 0 ) {
    $r = $matches[1];
    if(stripos($source, 'trackback') === false) {
    $r = false;
    }
    } else {
    $r = false;
    }
    return $r;
    }

  47. Ah yeah, here is the sample of working post with my cURL modification:
    http://id.itgossips.com/my-macbook.html

  48. 48 raimis300

    Okey… But I still have a problem with $post

    require(‘./wp-blog-header.php’);
    global $wpdb;
    $post = get_post(35);

    I tired doing it this way but I get error :

    Fatal error: Cannot pass parameter 1 by reference

    Am I missing something ?

  49. 49 Dan

    Josh,

    Anyway to get more returns under related post?

    I made a post with one tag which is very very popular term but post is returning only one related under related blogs. Anything I should do to return more and potentially get more backlinks?

    Dan

  50. Dan,

    yes there are two variables:

    $numberOfBlogsToGetFromGoogle = 35;
    $numberOfMaxLinksToPing = 5;

    The first one is how many blogs to get back per tag to see if it’s pingable, the second is the max per tag. If you are only getting a few then up the $numberOfBlogsToGetFromGoogle but remember the higher this goes the longer a request will take.

    Max Per Tag HTTP Request Count Formula where n is $numberOfBlogsToGetFromGoogle:
    t = 1 + ( n * 7 )

    so at 35 you got a max potential of 246 HTTP Request

    at 50 it then is 351 Request and so fourth.

    – Also note, I cache the tag results from google. So you can reuse tags, and the pingbacks will work but they will use the same blogs.

    Hope this helps!

  51. 51 Dan

    Thanks for the quick reply Josh!

    I just found out that, as it stands, since I am on a shared hosting, I can only use one tag to make it work otherwise the page goes blank and the plugin fail to execute. It posts fine but it will not any related post at the end.

    Anyway suggestions to make it so that I can use up to 3 tags? Or I need to find me a dedicated or vpn?

  52. Dan,

    The only thing I could think of is a cron job and refactor my code to queue up the HTTP request. Not sure if your shared host support that though.

  53. Hey Josh –

    I just wanted to put in a request for a drupal 5 version of this module. I recently switched over to drupal and would LOVE something like this!

    I added some notes on the bluehatseo post that might steer you in the right direction if you do indeed have any interest in a drupal version.

    Thanks!

  54. 54 Marc

    Any idea what is causing this issue or the fix?

    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /***/***/***/***/***/***/****/wp-content/plugins/pingcrawl.php on line 13

    quite a few people with it but yet to find a fix yet.

    Cheers

  55. 55 Marc

    disregard had version on eli’s blog.

    activates now, but might be old wp version.

    What version does this support?

    cheers

  56. 56 Sam

    Hey Josh, awesome plugin… but it’s not working for me…. this is what i get after making a post…

    Fatal error: Call to undefined function get_the_tags() in /home/myhost/public_html/mydomain/wp-content/plugins/pingcrawl.php on line 144

    Can you please help me out?

    Thnx again,

    Sam

  57. Sam, this is an isolated incident. Looks to be an issue with calling the wordpress function. I wish I could give you more?

  58. Ciao Josh, I have downloaded the latest plugin, activated corretly, but it does not return any pingback.

    I added three pretty common tag on my post: video, funny video, cool video. None of them returns pingback.

    How come? What am I doing wrong?

    I checked the database created and under pb_feeds I have some results from Google Blog Search but no pingbacks are added to the post!

    Can you help me with this issue? I really love this plugin and I want to make it work for me, please help!

    Francesco

  59. I’ve found myself in the Akismet spam directory and unfortunately am wondering if this plugin is responsible…

  60. The script works perfectly well, I just changed the script to get only the first tag, foreach removed otherwise it’s too heavy. the question is that the trackback sent is in the form of thetilteofmypost says… where thetilteofmypost becomes the name of the poster.
    is it possible to use the tag as part of the name, so the trackbak would be thetag says… ?

  61. 61 tuxpirate

    This plug-in breaks xmlrpc posting through xmlrpc.php on WP-2-5-1.

    I can post items when the plug-in is not activated but as soon as I activate it I’m receiving a 502 response from the server when adding new posts through XMLRPC.

    Could you provide additional information as to why this is happening?

    Would you require additional informations from my end in order to solve this problem?

  62. My mind is burnt.

    I could not figure out why this plugin cannot work for me.

    The Google search happens correctly and the database is updated too.

    But nothing happens next, no ping, no page update with the html code, nothing! WHY???

    I spent more than 4 hours this afternoon trying to figure this out.

    Please help!!!

    Francesco

  63. 63 tom

    Josh quote:
    “tom, transparentopac: I encountered random blank pages which seemed to be tag dependent. Change the tag to something very general, and only one and see if it still happens.”

    Hi Josh

    Still no luck with this. Regardless of what tag I use (video, nvidia etc) I just get a blank page after posting or amending a message.

    Sites are added to the DB table but there is nothing added to the actual post or page.

  64. Hi,
    I am getting this error and have attempted several posts…

    Fatal error: Call to undefined function: simplexml_load_string() in /home/zonedate/public_html/blog/wp-content/plugins/PingCrawl/pingcrawl.php on line 67

    Any advice?

  65. FYI: The problem was that the simplexml php extension is not installed on my current, shared hosting account and my webhost (hostforweb) says that I need to upgrade to a VPS for that service.

    I’ll be switching to a VPS and creating a new blog soon anyhow – can’t wait to try this plugin. Thanks for putting it out there.

  66. Im getting the exact same thing.. Occassionally I will get a blank page, and occassionally it will post correctly. But, either way, my feeds table is populated, but my ping table is always blank. I’ve tried about a dozen different tags, including some very specific long tail phrases. Any help? Anybody?

    Btw, I tried the whole video/picture blog setup with WordPress (which I had never used before) and it works like a gem! Not that Im rakin in tons of cash, but who couldn’t use a few hundred extra bucks each month! esp. for only like an hour of work…

    Thanks Eli, Josh Team, Digerati, All Ya’lls. I love your blogs’ keep it up.

    Its a crazy ride we’re on…. ‘Til the wheels come off!

  67. Francesco: The pingback functionality is taking too long and the savePost function continues execution assuming it never got the desired results. Either change the sleep(2) to sleep(5) for a better chance (though increased risk of timeout with multiple tags) or comment out the lines below it which iterate through the pingback and database update and you probably will have more success.

    Joshteam: Email me at the address provided with this comment. I have some code contributions to make to this project which I would be happy to share back to your source under a few basic conditions which I’d like to discuss.

  68. Really nice idea for a plugin.

    One of my blogs is on the recieving end of some of these request and I’ve 2 requests for a new version if possible:

    – turn off cache, or put in a option to turn it off. It means the same blog gets hit over and over again with requests if you have similar tags across posts. It is very obvious from my Comments list in WP admin that the same blog is spamming me with trackback requests time & time again. So what am i to do but hit the SPAM button and this blog will soon find itself in the Akismet DB.

    – Introduce some randomisation into the plugin. Let is choose a N random tags from the tag list for a post and also let it attempt to post to a random url from the 35 Google search returns rather than starting at the top. This would spread the load a better across dofferent target sites and help keep things under the radar.

  69. 69 David

    Cool plugin, works great on my VPS sites, but Dreamhost is still problematic. I added the “set_time_limit(360);” line. I had to start using it gossips’s CURL version, but it still doesn’t work right. It eventually dumps me to a PHP warning page like so:

    Warning: preg_match() [function.preg-match]: Empty regular expression in /home/.hercules/me/mysite.com/wp-content/plugins/pingcrawl.php on line 95
    (many of these, I think these are normal warnings though)

    Warning: Cannot modify header information – headers already sent by (output started at /home/.hercules/me/mysite.com/wp-content/plugins/pingcrawl.php:95) in /home/.hercules/me/mysite.com/wp-includes/pluggable.php on line 694

    Any tips on making this work with Dreamhost? Thanks.

  70. Great plugin guys. I modded it a tad bit and put it up on my blog if you’re interested. I think I fixed the whiteout page problem (added a timeout of 360 sec) and changed the lookup basis from the post tags to post title. 🙂 It’s a little more blackhat to your whitehat plugin 😉

    Thanks for the great code guys.

  71. Got an error while publishing: Fatal error: Call to undefined function: simplexml_load_string() in xxx/wp-content/plugins/pingcrawl.php on line 67

  72. The same problem as David has

  73. 73 Hatch

    Hey, I love this idea, but I’ve not been able to get it rolling. I’m running PHP 5.26 … not on hostgator…and have your latest version of pingcrawl installed…here’s the error message I’m getting; ( I haven’t seen this discussed yet, but forgive me if I missed it)

    Fatal error: Call to a member function asXML() on a non-object in …public_html/mysite.com/wp-content/plugins/pingcrawl/pingcrawl.php on line 68

  74. I’m also getting this error:

    Call to a member function asXML() on a non-object in line 68

    Any idea on a quick fix? I used the htaccess fix to run php5 on my server but it still gets this error now.

  75. When I post, it takes an ages to go through and the post.php page afterwards in blank.

    The article appears okay but no pingback links appear.

    Suggestions?

  76. 76 Mike

    Nice one..
    On line 107, the link to bluehatseo? Am I supposed to change that or?

  77. Hey Mike, you can if you want. It’s a link injection. Basically 10% of the time the pingbacks are to one of the links me and Eli have supplied. If you want to show appreciation you can keep it, otherwise you can change it or remove it w/o changing the way the plugin works.

  78. Any idea why I get this error after publishing a post?

    Fatal error: Call to a member function asXML() on a non-object in /…/wp-content/plugins/pingcrawl/pingcrawl.php on line 68

  79. 79 hitstopz

    Anyone know how to automate this with feedwordpress?

  80. histopz, i plan on writting a new plugin soon which will do just that. 🙂 + a few bells & whistles.

  81. 81 hitstopz

    I currently use simple tags to auto tag my post after wordpress. Is it possible to call the pingcrawl plugin after this? Is it possible to make the call in feedwordpress?

  82. 82 larry

    How can i get this plugin to work using category rather than tags? Also, I got this plugin to work on 2 posts but the related links showed up by site but my links were not on their site.

    It does not appear too be working anymore. Any suggestions on how to confirm if its working?

  83. 83 John

    Did anyone figure out what to do about the fatal call to the asXML() function yet?

    Fatal error: Call to a member function asXML() on a non-object in /home/username/public_html/wp-content/plugins/pingcrawl.php on line 68

  84. Got it working on my blog…haha. so cool. http://teesponsorsigns.com/

  85. The download link no longer works. Is there a mirror for this?

  86. 86 jason

    my blogs are hosted at godaddy, so it took a little work to get this to work with them.
    For instance, I had to use the cURL code listed above – but i discovered it had a typo:
    $pattern =”;
    Look at the original code to get the correct string pattern for this.

    I also had timeout issues. But if I limit the # of blogs to ping to only 1 per tag, it usually works with 3 tags. The set_time_out() did not work.

  87. Joshteam can you re-upload plugin please, the download link no longer working

  88. 88 weinsteincapital

    Great plugin idea.
    I loaded the plug in but get this error when trying to update my posts on paid2trade.com

    CGI Error
    The specified CGI application misbehaved by not returning a complete set of HTTP headers.

    ???

    any help would be great as I would love to use this

  89. 89 weinsteincapital

    I tried another update and received this (edited down to be able to submit) error. It appears to be a database error??

    WordPress database error Table ‘aquicks_wordpressWC.wp_pb_pingbacks’ doesn’t exist for query SELECT pb.id FROM wp_pb_pingbacks pb WHERE pb.post_id = “89” AND pb.haspb = 1 made by init

  90. 90 tim

    hi josh. excellent work. are you still working on the drupal version of this?
    🙂

  91. Josh,

    Wat about pingback for already existing posts?

  92. I tried to download the plugin twice…I get an error when trying to unzip it. “The compressed file or folder is corrupted.” I wonder if you know about this? I am anxious to try out the plugin.

  93. Hello
    Any chance to get v.1.02? Your link is dead…
    I’m on 1&1 host , php5, and can’t install the plugin:
    ******
    Plugin could not be activated because it triggered a fatal error.
    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /homepages/28/d238791283/htdocs/christmasmania/wp-content/plugins/pingcrawl/pingcrawl.php on line 13
    ******
    Thank you!

  94. 94 Klen

    Hi, Please Reupp this File for PHP4

    this Link ist not working -> http://www.spottedhere.com/pingcrawl.zip

    THANX

  95. 95 KSWD

    Josh,

    The link to v.2 is broken (http://www.spottedhere.com/pingcrawl.zip). Any chance of getting a copy please?

    Many thanks,

    KSWD

  96. Hi!
    I’ve just installed the plugin… But how can i check if it really works??

  97. Awesome guys, just got this working. My first post has 5 backlinks now 🙂 Check it out: FreeBets.ca. But I do worry that if the other site deletes the comment or marks it as spam I am still giving away a link for nothing in return 😦

  98. 98 jaksmith

    I installed it on one of my blogs but I dont see were I can make any changes, no new tab was created!

    very cool idea!!!

  99. yeah nothing showing up – downloaded what appears to be version 1.0 but was advertised as 1.02 elsewhere (rapidshare) but can’t get it too work – would be a nicely used one if your going to carry on with it?

  100. 100 Russell

    How would this work with WP-O-Matic?

    For example, if I have wp-o-matic set to fetch 40 posts from 4 different RSS feeds and all 40 of those posts are given the same tag, would PingCrawl search google for 35 blog posts with the same tag and post a pingback to the same first five for each of my 40 new posts? In other words, would the first 5 relevant blogs found on Google have 40 pingbacks from my 40 newly imported posts?

  101. the download link is broken please fix it.

    thanks

  102. found an alternative link to download the plugin by googleing

    bluehatseo.com/wp-content/uploads/2008/08/pingcrawl.zip

  103. Great plug-in. I have Godaddy hosting and at first the plugin failed to activate. I added thse lines of code to my .htaccess file and it activates and works fine.

    AddHandler x-httpd-php5 .php
    AddHandler x-httpd-php .php4

  104. Hi, could you please update the link? It is not downloadable anymore. Thanks!

  105. Will be trying this soon, thanks

  106. I’ve released a hacked version of this that uses cURL so it should work with most shared hosts (I’ve tested it with Dreamhost, Media Temple, and HostGator).

    http://www.klintron.com/linkcurl/

    It also adds a settings menu that lets you choose between title, tag, and category as the basis for the Google search, allows you to choose how many links to post, and whether to verify the target sites accept pingbacks.

    I prefer not to verify that pingbacks are accepted, for three reasons: 1) I get better quality results 2) It seems like most of the pinged sites were “bait and switching” – they appear to accept pingbacks but the pingbacks aren’t posted (and even if they do they’re probably using “nofollow”). 3) It slows down posting.

  107. Did you pull the link? I can’t download your plugin.

    Can you explain the benefits a little bit more?

  108. 108 Monkeyman

    I will start using this. One problem though…

    When I click download link, I get this

    “Not Found

    The requested URL /pingcrawl.zip was not found on this server…”

    Maybe I need to download Eli’s older version.

  109. Hi, I see several posts about the link not working. Not working here either. Where can I get php4 version please.

  110. Download link is not working. are you still working on it?

  111. I tried it in wp 2.7 but it does not show up in the settings bar.

    Too bad, it looks great and I hope it works again.

  112. thank you for explain about config this plugin. it dificult to set it up

  113. Ugh. I crapped my pants a little when I first read about this on Bluehat & now that I’m actually ready to give it a whirl is seems to be down. I grabbed the old version from Eli. Will be following this post like a sniper for updates.

  114. 115 ilkay

    i activated this plugin (its an awesome idea btw) but when i send a new post, there is 3 or 4 “Similar posts” subject and there are same links each “similar posts” subject.

    I mean:

    Similar Posts:
    link A
    link B
    link C

    Similar Posts:
    link A
    link B
    link C

    Similar Posts:
    link A
    link B
    link C

    why this is happening?

    (I am using just one keyword)

  115. 116 DRK

    Can’t get this to work with my autoposter WP Robot, any ideas why? I have to manually go to each page to edit and update to make it work.

    • email me – joshteam [a-t] gma(i)l.com with more details. Url of your blog, and create me an admin account so I can login and try myself.

    • This may be a hassle, but can you try another autoposter? WP Robot may supersede the WP framework.

  116. 119 Andi

    mmm.. I can’t get this pluging working. I’ve got an WPMU 2.7.1 and the pings don’t appear anywhere…

    Is this working for that version?

    Thank you

    • I have not tested against WPMU – can you try the same steps you are doing on a non WPMU instance? Also .. ping-backs are 99% caught by a queue, that the blog owners have to authorize.’

      Make sure you are using PingCrawl 2 as well.

  117. 121 ricardo

    Excellent plugin
    Version 2 is working well but it only appears in a post that was the first where I put the tags and update.
    In other post I’m already tired of putting tags and update but do not appear related blogs in that post.

    The plugin only works when i publish a post or also work on posts already published and updated?

    can You help me joshteam

    Regards

    • Try different tags. It should only distribute links to outbound blogs that ARE accepting ping-backs. And then, expect an approval waiting time from the blog manager. I made it more strict on approved pingback blogs, to stop from wasting link juice on bad blogs/cloaks.

  118. 123 Felix

    This seems cool but I have a list of like nearly 100 links. Is there any way to shorten this? I have only one tag. I tried to publish my post half an hour ago and it’s still going

  119. Can you change the default text:

    Possibly related posts: (automatically generated)

    * Related posts on (meta tag)

    Thanks

  120. 125 Gail Edinger

    This post is really the best on this valuable topic. I agree with your points of view and will eagerly look forward to your future updates. Just saying thanks will not just be enough, for the phenomenal clarity in your writing. I will directly grab your rss feed to stay up to date of any updates. Solid work and much success in your blogging endeavors!

  121. Hey,

    Mine is working fine except for one very important error.
    I can’t edit posts with this plugin active, very strange.
    Any ideas on this one?

  122. how to change atribut dofollow to nofollow in plugin pingcrawl?


  1. 1 Mit PingCrawl bekommmt jeder Blogartikel direkt Deeplinks
  2. 2 PingCrawl injects links | Occupied, DND, Away
  3. 3 ø Random Linkage Day | W-Shadow.com ø
  4. 4 Resources for Bootstrapping a Dating Site Business | ZoneDate Internet Dating Blog
  5. 5 Про чудо-хостинг и прикольный плагинчег | Одесский НеБомж
  6. 6 SEO underWorld » Blog Archive » 9 Epic SEO Scripts
  7. 7 trackbacks | juust ~ php oddities
  8. 8 Free Wired SEO Search Engine Submission - search engine submission,page rank,adsense,build traffic

Leave a reply to Nathan Cancel reply