Changeset 2688890
- Timestamp:
- 03/04/2022 01:12:15 PM (4 years ago)
- Location:
- seo-links-interlinking
- Files:
-
- 42 added
- 3 edited
-
assets/1.5.8 (added)
-
assets/1.5.8/ajax.php (added)
-
assets/1.5.8/css (added)
-
assets/1.5.8/css/bootstrap.min.css (added)
-
assets/1.5.8/css/main.css (added)
-
assets/1.5.8/images (added)
-
assets/1.5.8/images/loader.gif (added)
-
assets/1.5.8/index.php (added)
-
assets/1.5.8/js (added)
-
assets/1.5.8/js/bootstrap.min.js (added)
-
assets/1.5.8/js/mozscript.js (added)
-
assets/1.5.8/js/seo_links.js (added)
-
assets/1.5.8/loader.php (added)
-
assets/1.5.8/main.css (added)
-
assets/1.5.8/readme.txt (added)
-
assets/1.5.8/scdata.php (added)
-
assets/1.5.8/utils.php (added)
-
assets/1.5.8/view (added)
-
assets/1.5.8/view/search_console.php (added)
-
assets/1.5.8/view/search_console_export.php (added)
-
assets/1.5.8/view/settings.php (added)
-
tags/1.5.8 (added)
-
tags/1.5.8/ajax.php (added)
-
tags/1.5.8/css (added)
-
tags/1.5.8/css/bootstrap.min.css (added)
-
tags/1.5.8/css/main.css (added)
-
tags/1.5.8/images (added)
-
tags/1.5.8/images/loader.gif (added)
-
tags/1.5.8/index.php (added)
-
tags/1.5.8/js (added)
-
tags/1.5.8/js/bootstrap.min.js (added)
-
tags/1.5.8/js/mozscript.js (added)
-
tags/1.5.8/js/seo_links.js (added)
-
tags/1.5.8/loader.php (added)
-
tags/1.5.8/main.css (added)
-
tags/1.5.8/readme.txt (added)
-
tags/1.5.8/scdata.php (added)
-
tags/1.5.8/utils.php (added)
-
tags/1.5.8/view (added)
-
tags/1.5.8/view/search_console.php (added)
-
tags/1.5.8/view/search_console_export.php (added)
-
tags/1.5.8/view/settings.php (added)
-
trunk/ajax.php (modified) (7 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/scdata.php (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
-
seo-links-interlinking/trunk/ajax.php
r2682042 r2688890 35 35 $title = strtolower( $content_post->post_title ); 36 36 $permalink = get_the_permalink( $post_id ); 37 $permalink_explode = explode('/', $permalink);38 $permalink_filter = $permalink_explode[3] ?? '';37 //$permalink_explode = explode('/', $permalink); 38 //$permalink_filter = $permalink_explode[3] ?? ''; 39 39 40 40 $server_uri = SEOLI_SITE_URL . SEOLI_SERVER_REQUEST_URI; … … 62 62 $most_relevant_keyword = array(); // Tutte le keyword escluse quelle della url corrente 63 63 $seo_link_keywords = array(); // Tutte le keyword della url corrente 64 $ seo_link_keywords_filtered = array(); // Tutte le keyword che matchano il titolo con il filtro sul numero di caratteri delle parole64 $internal_link_keywords_filtered = array(); // Tutte le keyword che matchano il titolo con il filtro sul numero di caratteri delle parole 65 65 $words = array(); 66 66 67 //$categories = wp_get_post_categories( $post_id ); 67 68 foreach($rowData as $row){ 68 69 $ga_url = $row->page; … … 72 73 $ga_key = str_replace('”', '"', $ga_key); 73 74 74 $url_explode = explode('/', $ga_url );75 $url_filter = $url_explode[3] ?? '';75 //$url_explode = explode('/', $ga_url ); 76 //$url_filter = $url_explode[3] ?? ''; 76 77 77 78 // Nelle keyword link tutte le rilevanti ( escluso la URL ). Se il post è in bozza droppo la condizione url_filter = permalink_filter 78 if( ( $post_status == 'draft' || $url_filter == $permalink_filter ) && $permalink != $ga_url ) { 79 // Se la lunghezza della kw è > di 5 la inserisco negli interal links, altrimenti no 80 // La condizione url_filter == permalink_filter mi serve per prendere le kw della categoria, quindi: 81 // Prendo le categorie del post. Per ogni ga_url prendo le categorie. Se Almeno una categoria di ga_url è presente tra le categorie del post, prendo la kw. 82 83 //$ga_post_id = url_to_postid( $ga_url ); 84 //$ga_categories = wp_get_post_categories( $ga_post_id ); 85 //$intersect = array_intersect( $categories, $ga_categories ); // Intersezione: è vuota se le categorie del post e di ga_post sono tutte diverse, se almeno una è in comune invece non sarà vuota ma conterrà appunto la categoria in comune. 86 87 //if( ( $post_status == 'draft' || $url_filter == $permalink_filter ) && $permalink != $ga_url && strlen( $ga_key ) > 5 ) { 88 //if( ( $post_status == 'draft' || !empty( $intersect ) ) && $permalink != $ga_url && strlen( $ga_key ) > 5 ) { 89 if( $permalink != $ga_url && strlen( $ga_key ) > 5 ) { // Mostro tutte le keywords sempre 79 90 // Se sono in /tecnologia/articolo prendo solo le keyword che hanno url /tecnlogia 80 91 … … 93 104 $replaced[] = $ga_key; 94 105 $words[] = seoli_search_replace_regex( $ga_key, $content ); 95 } else {96 if (false !== strpos($content, $url_with_content)) {97 // Already replaced98 //$replaced[] = $ga_key;99 }100 106 } 107 } 101 108 109 /** 110 * Esplodo la keyword in parole lunghe almeno 3 caratteri 111 * Esplodo il titolo in parole lunghe almeno 3 caratteri 112 * Se coincidono le mostro, altrimenti mostro tutte le keyword 113 */ 114 $ga_key_array = explode(' ', $ga_key); 115 $ga_key_array_filtered = array_filter($ga_key_array,function($v){ return strlen($v) > 3; }); 116 $title_array = explode(' ', $title); 117 $title_array_filtered = array_filter($title_array,function($v){ return strlen($v) > 3; }); 118 // Torna gli elementi di ga_key_filtered che non sono presenti in title_array_filtered, quindi mi deve tornare 0 per avere un match completo. 119 $array_diff = array_diff( $ga_key_array_filtered, $title_array_filtered ); 120 if( empty( $array_diff ) && !empty( $ga_key_array_filtered ) ) { 121 $internal_link_keywords_filtered[] = $ga_key; 102 122 } 103 123 } 104 124 105 125 // Nelle keyword seo Solo la URL del post 106 $ga_url_explode = array_filter( explode('/', $ga_url) );126 $ga_url_explode = array_filter( explode('/', str_replace( site_url(), '', $ga_url )) ); 107 127 $ga_url_post_name = array_pop( $ga_url_explode ); 128 //echo $permalink . " --> " . $ga_url_post_name . "\n"; 108 129 if( strpos( $permalink, $ga_url_post_name ) !== false ) { 109 130 $seo_link_keywords[] = $ga_key; … … 113 134 } 114 135 115 /**116 * Esplodo la keyword in parole lunghe almeno 3 caratteri117 * Esplodo il titolo in parole lunghe almeno 3 caratteri118 * Se coincidono le mostro, altrimenti mostro tutte le keyword119 */120 $ga_key_array = explode(' ', $ga_key);121 $ga_key_array_filtered = array_filter($ga_key_array,function($v){ return strlen($v) > 3; });122 $title_array = explode(' ', $title);123 $title_array_filtered = array_filter($title_array,function($v){ return strlen($v) > 3; });124 // Torna gli elementi di ga_key_filtered che non sono presenti in title_array_filtered, quindi mi deve tornare 0 per avere un match completo.125 $array_diff = array_diff( $ga_key_array_filtered, $title_array_filtered );126 if( empty( $array_diff ) ) {127 $seo_link_keywords_filtered[] = $ga_key;128 }129 130 136 $keyword_position[$ga_key] = $row->position; 131 $keyword_impressions[$ga_key] = $row->impressions;137 $keyword_impressions[$ga_key] += $row->impressions; 132 138 $keyword_processed[] = $ga_key; 133 139 } … … 144 150 145 151 update_post_meta( $content_post->ID, 'seo_links_keywords', $seo_link_keywords); 146 update_post_meta( $content_post->ID, 'seo_links_keywords_filtered', $seo_link_keywords_filtered); 152 update_post_meta( $content_post->ID, 'seo_links_keywords_filtered', $internal_link_keywords_filtered); 153 update_post_meta( $content_post->ID, 'internal_links_keywords_filtered', $internal_link_keywords_filtered); 147 154 update_post_meta( $content_post->ID, 'seo_links_keywords_position', $keyword_position); 148 155 update_post_meta( $content_post->ID, 'seo_links_keywords_impressions', $keyword_impressions); … … 155 162 'post_content' => $content, 156 163 'seo_links_keywords' => $seo_link_keywords, 157 'seo_links_keywords_filtered' => $seo_link_keywords_filtered, 164 'seo_links_keywords_filtered' => $internal_link_keywords_filtered, 165 'internal_links_keywords_filtered' => $internal_link_keywords_filtered, 158 166 'seo_links_keywords_position' => $keyword_position, 159 167 'seo_links_keywords_impressions' => $keyword_impressions, -
seo-links-interlinking/trunk/readme.txt
r2683944 r2688890 5 5 Requires at least: 4.7 6 6 Tested up to: 5.8 7 Stable tag: 1.5. 57 Stable tag: 1.5.4 8 8 Requires PHP: 7.1 9 9 License: GPLv2 or later … … 26 26 27 27 == Upgrade Notice == 28 29 = 1.5.8 = 30 You can run add links into pages too 31 Internal Links pagination 32 Minor fixes 28 33 29 34 = 1.5.5 = -
seo-links-interlinking/trunk/scdata.php
r2683944 r2688890 6 6 * Author: WP SEO Plugins 7 7 * Author URI: https://wpseoplugins.org/ 8 * Version: 1.5. 58 * Version: 1.5.8 9 9 */ 10 10 header('Content-Type: text/html; charset=utf-8'); … … 32 32 define( 'SEOLI_SITE_URL', ( SEOLI_SERVER_PORT == 80 ? 'http://' : 'https://' ) . SEOLI_SERVER_NAME ); 33 33 define( 'SEOLI_SERVER_REQUEST_URI', $_SERVER['REQUEST_URI']); 34 define( 'SEOLI_VERSION', '1.5. 5' );34 define( 'SEOLI_VERSION', '1.5.8' ); 35 35 36 36 37 37 #function for add metabox. 38 38 function seoli_register_meta_boxes() { 39 add_meta_box("seoli-meta-box", "SEO Links Interlinking", "seoli_display_callback", "post", "side", "default", null);39 add_meta_box("seoli-meta-box", "SEO Links Interlinking", "seoli_display_callback", ["post", "page"], "side", "default", null); 40 40 41 41 } … … 47 47 48 48 <script> 49 50 const _internaLinksPaginationLimit = 100; 51 49 52 function seoli_isGutenbergActive() { 50 53 return typeof wp !== 'undefined' && typeof wp.blocks !== 'undefined'; … … 192 195 const seo_links_keywords_impressions = response.seo_links_keywords_impressions; 193 196 const seo_links_keywords_filtered = response.seo_links_keywords_filtered; 197 const internal_links_keywords_filtered = response.internal_links_keywords_filtered; 194 198 const seo_links_keywords = response.seo_links_keywords; 199 200 <!-- SEO Keywords --> 195 201 let seo_keywords = []; 196 202 for( let slkf in seo_links_keywords_filtered ) { 197 //seo_keywords[ seo_links_keywords_filtered[ slkf ] ] = seo_links_keywords_position[ seo_links_keywords_filtered[ slkf ] ];198 203 seo_keywords[ seo_links_keywords_filtered[ slkf ] ] = seo_links_keywords_impressions[ seo_links_keywords_filtered[ slkf ] ]; 199 204 } … … 210 215 <tbody>`; 211 216 217 seo_keywords = []; 218 for( let slk in seo_links_keywords ) { 219 seo_keywords[ seo_links_keywords[ slk ] ] = seo_links_keywords_impressions[ seo_links_keywords[ slk ] ]; 220 } 212 221 for( let sk in seo_keywords ) { 213 222 seo_link_keywords_html += ` 214 <tr class="seo_links_keywords_filtered"> 215 <td> 216 `+ seoli_stripslashes( sk ) +` 217 </td> 218 <td style="text-align: center;"> 219 `+ seo_keywords[ sk ] + ` 220 </td> 221 </tr> 222 `; 223 } 224 225 seo_link_keywords_html += ` 226 <tr class="seo_links_keywords_filtered"> 227 <td colspan="2"><a href="javascript:void(0);" onclick="jQuery('.seo_keywords').show();jQuery('.seo_links_keywords_filtered').hide();">Show more keywords</a></td> 228 </tr>`; 229 230 seo_keywords = []; 231 for( let slk in seo_links_keywords ) { 232 //seo_keywords[ seo_links_keywords[ slk ] ] = seo_links_keywords_position[ seo_links_keywords[ slk ] ]; 233 seo_keywords[ seo_links_keywords[ slk ] ] = seo_links_keywords_impressions[ seo_links_keywords[ slk ] ]; 234 } 235 for( let sk in seo_keywords ) { 236 seo_link_keywords_html += ` 237 <tr class="seo_keywords" style="display:none;"> 223 <tr class="seo_keywords"> 238 224 <td> 239 225 `+ seoli_stripslashes( sk ) +` … … 249 235 document.getElementById('seo_links_keyword').innerHTML = seo_link_keywords_html; 250 236 237 <!-- Internal Links --> 238 let internal_links = []; 239 240 let seo_links_most_relevant_keyword_html = ` 241 <input type="text" id="seo_links_most_relevant_keyword_input" onkeyup="keywordResearch('seo_links_most_relevant_keyword')" placeholder="Search for keyword.." style="margin-top: 16px;width: 100%;" /> 242 <table style="margin: 8px 0;"> 243 <thead> 244 <tr> 245 <th scope="row" style="width:70%;cursor: pointer;">Keyword</th> 246 <th scope="row" style="cursor: pointer;">Impressions</th> 247 </tr> 248 </thead> 249 <tbody>`; 250 251 if( internal_links_keywords_filtered.length > 0 ) { 252 for( let slkf in internal_links_keywords_filtered ) { 253 internal_links[ internal_links_keywords_filtered[ slkf ] ] = seo_links_keywords_impressions[ internal_links_keywords_filtered[ slkf ] ]; 254 } 255 256 for( let sk in internal_links ) { 257 seo_links_most_relevant_keyword_html += ` 258 <tr class="internal_links_keywords_filtered"> 259 <td> 260 `+ seoli_stripslashes( sk ) +` 261 </td> 262 <td style="text-align: center;"> 263 `+ internal_links[ sk ] + ` 264 </td> 265 </tr> 266 `; 267 } 268 269 seo_links_most_relevant_keyword_html += ` 270 <tr class="internal_links_keywords_filtered paginate"> 271 <td colspan="2"><a href="javascript:void(0);" onclick="paginateInternalLinks()">Show more keywords</a></td> 272 </tr>`; 273 } 274 251 275 const seo_links_most_relevant_keyword = response.most_relevant_keyword; 252 letinternal_links = [];276 internal_links = []; 253 277 for( let i = 0; i < seo_links_most_relevant_keyword.length; i++ ){ 254 //internal_links[ seo_links_most_relevant_keyword[i] ] = seo_links_keywords_position[ seo_links_most_relevant_keyword[i] ];255 278 internal_links[ seo_links_most_relevant_keyword[i] ] = seo_links_keywords_impressions[ seo_links_most_relevant_keyword[i] ]; 256 279 } 257 280 258 let seo_links_most_relevant_keyword_html = ` 259 <input type="text" id="seo_links_most_relevant_keyword_input" onkeyup="keywordResearch('seo_links_most_relevant_keyword')" placeholder="Search for keyword.." style="margin-top: 16px;width: 100%;" /> 260 <table style="margin: 8px 0;"> 261 <thead> 262 <tr> 263 <th scope="row" style="width:70%;cursor: pointer;">Keyword</th> 264 <th scope="row" style="cursor: pointer;">Impressions</th> 265 </tr> 266 </thead> 267 <tbody>`; 281 let j = 0; 282 let _display = ''; 268 283 for( let il in internal_links ) { 269 284 let dashicon_yes = ''; … … 271 286 dashicon_yes = '<span class="dashicons dashicons-yes"></span>'; 272 287 } 288 if( internal_links_keywords_filtered.length > 0 ) { 289 _display = 'display:none;'; 290 } 291 if( j++ >= _internaLinksPaginationLimit ) { 292 _display = 'display:none;'; 293 } 294 273 295 seo_links_most_relevant_keyword_html += ` 274 <tr >296 <tr class="internal_links" style="` + _display + `"> 275 297 <td> 276 298 `+ seoli_stripslashes( il ) +` … … 285 307 `; 286 308 } 309 if( j > _internaLinksPaginationLimit ) { 310 if( internal_links_keywords_filtered.length == 0 ) { 311 _display = ''; 312 } 313 seo_links_most_relevant_keyword_html += ` 314 <tr class="internal_links paginate" style="` + _display + `"> 315 <td colspan="2"><a href="javascript:void(0);" onclick="paginateInternalLinks()">Show more keywords</a></td> 316 </tr>`; 317 } 287 318 seo_links_most_relevant_keyword_html += ` 288 319 </tbody> … … 290 321 document.getElementById('seo_links_most_relevant_keyword').innerHTML = seo_links_most_relevant_keyword_html; 291 322 }); 323 } 324 } 325 326 function paginateInternalLinks() { 327 jQuery('.internal_links_keywords_filtered').hide(); 328 const internal_links = jQuery('.internal_links:not(:visible)'); 329 for( let i = 0; i < _internaLinksPaginationLimit; i++ ) { 330 jQuery( internal_links[ i ] ).show(); 331 } 332 if( internal_links.length <= _internaLinksPaginationLimit ) { 333 jQuery( '.internal_links.paginate' ).hide(); 334 } else { 335 jQuery( '.internal_links.paginate' ).show(); 292 336 } 293 337 } … … 394 438 tr[i].style.display = ""; 395 439 } else { 440 tr[i].style.display = "none"; 441 } 442 if( tr[i].className == 'internal_links_keywords_filtered' ) { 396 443 tr[i].style.display = "none"; 397 444 } … … 521 568 $seo_links_keywords_position = get_post_meta( $post->ID, 'seo_links_keywords_position', true); 522 569 $seo_links_keywords_impressions = get_post_meta( $post->ID, 'seo_links_keywords_impressions', true); 570 $seo_links_keywords_impressions = $seo_links_keywords_impressions != '' ? $seo_links_keywords_impressions : array(); 523 571 $most_relevant_keyword = get_post_meta( $post->ID, 'most_relevant_keyword', true); 524 572 $seo_links_all_keywords = get_post_meta( $post->ID, 'seo_links_all_keywords', true); 525 573 $most_relevant_keyword = empty( $most_relevant_keyword ) ? $seo_links_all_keywords : $most_relevant_keyword; 526 574 $seo_links_keywords_filtered = get_post_meta( $post->ID, 'seo_links_keywords_filtered', true); 575 $internal_links_keywords_filtered = get_post_meta( $post->ID, 'internal_links_keywords_filtered', true); 527 576 $seo_links_last_update = get_option( 'seo_links_last_update' ); 528 577 ?> … … 543 592 <?php 544 593 $seo_keywords = array(); 545 foreach( $seo_links_keywords_filtered as $seo_link ) :546 //$seo_keywords[ $seo_link ] = $seo_links_keywords_position[$seo_link];547 $seo_keywords[ $seo_link ] = $seo_links_keywords_impressions[$seo_link];548 endforeach;549 arsort( $seo_keywords );550 ?>551 <?php foreach( $seo_keywords as $seo_link => $seo_position ) : ?>552 <tr class="seo_links_keywords_filtered">553 <td>554 <?php echo esc_html( $seo_link ); ?>555 </td>556 <td style="text-align: center;">557 <?php echo esc_html( $seo_position ); ?>558 </td>559 </tr>560 <?php endforeach; ?>561 <tr class="seo_links_keywords_filtered">562 <td colspan="2"><a href="javascript:void(0);" onclick="jQuery('.seo_keywords').show();jQuery('.seo_links_keywords_filtered').hide();">Show more keywords</a></td>563 </tr>564 <?php565 $seo_keywords = array();566 594 foreach( $seo_links_keywords as $seo_link ) : 567 595 //$seo_keywords[ $seo_link ] = $seo_links_keywords_position[$seo_link]; … … 571 599 ?> 572 600 <?php foreach( $seo_keywords as $seo_link => $seo_position ) : ?> 573 <tr class="seo_keywords" style="display:none;">601 <tr class="seo_keywords"> 574 602 <td> 575 603 <?php echo esc_html( $seo_link ); ?> … … 603 631 <tbody> 604 632 <?php 633 $internal_links = array(); 634 $paginationLimit = 100; 635 if( !empty( $internal_links_keywords_filtered ) ) : 636 foreach( $internal_links_keywords_filtered as $internal_link ) : 637 $internal_links[ $internal_link ] = $seo_links_keywords_impressions[ $internal_link ]; 638 endforeach; 639 arsort( $internal_links ); 640 ?> 641 <?php foreach( $internal_links as $seo_link => $seo_position ) : ?> 642 <tr class="internal_links_keywords_filtered"> 643 <td> 644 <?php echo esc_html( $seo_link ); ?> 645 </td> 646 <td style="text-align: center;"> 647 <?php echo esc_html( $seo_position ); ?> 648 </td> 649 </tr> 650 <?php endforeach; ?> 651 <tr class="internal_links_keywords_filtered paginate"> 652 <td colspan="2"><a href="javascript:void(0);" onclick="paginateInternalLinks()">Show more keywords</a></td> 653 </tr> 654 <?php endif; ?> 655 656 <?php 605 657 $internal_links = array(); 606 658 foreach( $most_relevant_keyword as $seo_link ) : … … 610 662 arsort( $internal_links ); 611 663 ?> 664 <?php $j = 0; ?> 612 665 <?php foreach( $internal_links as $seo_link => $seo_position ) : ?> 613 <tr> 666 <?php 667 $display = '' ; 668 if( !empty( $internal_links_keywords_filtered ) ) : 669 $display = 'display:none;'; 670 endif; 671 if( $j++ >= $paginationLimit ) : 672 $display = 'display:none;'; 673 endif; 674 ?> 675 <tr class="internal_links" style="<?php echo $display; ?>"> 614 676 <td> 615 677 <?php echo esc_html( $seo_link ); ?> … … 625 687 </tr> 626 688 <?php endforeach; ?> 689 <?php if( count( $internal_links ) > $paginationLimit ) : ?> 690 <?php 691 if( count( $internal_links_keywords_filtered ) == 0 ) : 692 $display = ''; 693 endif; 694 ?> 695 <tr class="internal_links paginate" style="<?php echo $display; ?>"> 696 <td colspan="2"><a href="javascript:void(0);" onclick="paginateInternalLinks()">Show more keywords</a></td> 697 </tr> 698 <?php endif; ?> 627 699 </tbody> 628 700 </table>
Note: See TracChangeset
for help on using the changeset viewer.