davioliveira

ctt_related_content

Jun 18th, 2021
673
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function ctt_related_content($content){
  2.  
  3.   $num_related = 3; //Quantidade de posts relacionados
  4.   $related_pos = 5; //Inserido após o parágrafo X
  5.  
  6.   if(has_shortcode($content, "relacionadas")){
  7.     return $content;
  8.   }
  9.  
  10.   if(has_tag('norelated')){
  11.       return $content;
  12.   }else{
  13.  
  14.       global $post;
  15.  
  16.   $id          = $post->ID;
  17.   $related_pos_h = $related_pos;
  18.   $related_pos   = ($related_pos > 0)?$related_pos:1;
  19.  
  20.  
  21.       # Get ACF array
  22.   $posts = get_field('relacionadas');
  23.  
  24.       if($posts == ""){
  25.  
  26.     //Pesquisa por tag
  27.           if(has_tag()){
  28.  
  29.               $tags             = get_the_tags();
  30.               $num_tags         = count($tags);
  31.               $tag              = $tags[0]->slug;
  32.               $the_query        = new WP_Query(
  33.                                               array(
  34.                                                   'tag'          => $tag,
  35.                                                   'post__not_in' => array($id),
  36.                                               )
  37.                                           );
  38.               $posts            = $the_query->posts;
  39.               $limit            = (count($posts) < $num_related)?(count($posts)):$num_related;
  40.               $marcaParagrafo   = "</p>";
  41.               $content_orig     = $content;
  42.               $content          = explode($marcaParagrafo, $content);
  43.  
  44.               if(count($content) < ($limit * $related_pos)){
  45.                   $marcaParagrafo = "</h2>";
  46.                   $content = explode($marcaParagrafo, $content_orig);
  47.                   $related_posOrig = $related_pos;
  48.                   $related_pos = $related_pos_h;
  49.  
  50.                   if(count($content) < $num_related){
  51.  
  52.                       $marcaParagrafo = "</h3>";
  53.                       $content = explode($marcaParagrafo, $content_orig);
  54.                       $numTags = count($content);
  55.  
  56.                       if($numTags < 2 || $numTags < $num_related){
  57.                           $marcaParagrafo = "</p>";
  58.                           $content = explode($marcaParagrafo, $content_orig);
  59.                           $related_pos = floor(($related_posOrig-1)/2);
  60.                       }
  61.                   }
  62.               }
  63.  
  64.               $new_content = '';
  65.               $numParagrafos = count($content);
  66.               $acf_i = 0;
  67.               $c = 0;
  68.  
  69.               for ($i = 0; $i < $numParagrafos; $i++) {
  70.  
  71.                   if ($i % $related_pos == 0 && $i == $related_pos) {
  72.  
  73.                       $c++;
  74.           ob_start();
  75.  
  76.           echo "<div class='row'>";
  77.          
  78.           for($j=0; $j<$limit; $j++){
  79.  
  80.             if($c < $limit or $c == $limit) {
  81.  
  82.               if($id != $posts[$acf_i]->ID) {
  83.                
  84.                 setup_postdata($posts[$acf_i]);
  85.                 $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($posts[$acf_i]->ID), '218thumb' );
  86.                 $url = $thumb['0']; ?>
  87.  
  88.                 <?php if(is_single()) { ?>
  89.                 <div class="col-md-4 col-xs-12">
  90.                   <a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>" class="related-middle-content"><img src="<?php echo $url; ?>" class="img-responsive<?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo " relacionado-amp"; } ?>"></a>
  91.                   <span><a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>" class="related-middle-content">
  92.                   <?php $title = get_the_title($posts[$acf_i]->ID); echo $title; ?></a></span>
  93.                 </div>
  94.                 <?php } else { ?>
  95.                 <div class="col-md-4 col-xs-12">
  96.                 <p><a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>">
  97.                 <?php $title = get_the_title($posts[$acf_i]->ID); echo $title; ?> <?php echo $limite; ?></a> <?php echo $id; ?></p>
  98.                 </div>
  99.                 <?php
  100.                 }
  101.               }
  102.               $acf_i++;
  103.             }
  104.           }
  105.  
  106.           echo "</div>";
  107.  
  108.                       $new_content.= ob_get_contents();
  109.                       ob_end_clean();
  110.                   }
  111.                   $new_content .= $content[$i].$marcaParagrafo;
  112.               }
  113.               wp_reset_postdata();
  114.       return $new_content;
  115.      
  116.           }elseif(has_category()){
  117.  
  118.               $tags             = get_the_category();
  119.               $num_tags         = count($tags);
  120.       $tag              = $tags[0]->slug;
  121.      
  122.       $args               = array(
  123.                   'category_name' => $tag,
  124.                   'post__not_in'  => array($id),
  125.                 );
  126.               $the_query        = new WP_Query($args);
  127.               $posts            = $the_query->posts;
  128.               $limit            = (count($posts) < $num_related)?(count($posts)):$num_related;
  129.               $marcaParagrafo   = "</p>";
  130.               $content_orig     = $content;
  131.       $content          = explode($marcaParagrafo, $content);
  132.  
  133.               if(count($content) < ($limit * $related_pos)){
  134.                   $marcaParagrafo = "</h2>";
  135.                   $content = explode($marcaParagrafo, $content_orig);
  136.                   $related_posOrig = $related_pos;
  137.                   $related_pos = $related_pos_h;
  138.  
  139.                   if(count($content) < $num_related){
  140.  
  141.                       $marcaParagrafo = "</h3>";
  142.                       $content = explode($marcaParagrafo, $content_orig);
  143.                       $numTags = count($content);
  144.  
  145.                       if($numTags < 2 || $numTags < $num_related){
  146.                           $marcaParagrafo = "</p>";
  147.                           $content = explode($marcaParagrafo, $content_orig);
  148.                           $related_pos = floor(($related_posOrig-1)/2);
  149.                       }
  150.                   }
  151.               }
  152.  
  153.               $new_content = '';
  154.               $numParagrafos = count($content);
  155.               $acf_i = 0;
  156.               $c = 0;
  157.  
  158.               for ($i = 0; $i < $numParagrafos; $i++) {
  159.  
  160.                   if ($i % $related_pos == 0 && $i == $related_pos) {
  161.  
  162.                       $c++;
  163.           ob_start();
  164.  
  165.           echo "<div class='row'>";
  166.          
  167.           for($j=0; $j<$limit; $j++){
  168.  
  169.             if($c < $limit or $c == $limit) {
  170.  
  171.               if($id != $posts[$acf_i]->ID) {
  172.                
  173.                 setup_postdata($posts[$acf_i]);
  174.                 $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($posts[$acf_i]->ID), '218thumb' );
  175.                 $url = $thumb['0']; ?>
  176.  
  177.                 <?php if(is_single()) { ?>
  178.                 <div class="col-md-4 col-xs-12">
  179.                   <a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>" class="related-middle-content"><img src="<?php echo $url; ?>" class="img-responsive<?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo " relacionado-amp"; } ?>"></a>
  180.                   <span><a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>" class="related-middle-content">
  181.                   <?php $title = get_the_title($posts[$acf_i]->ID); echo $title; ?></a></span>
  182.                 </div>
  183.                 <?php } else { ?>
  184.                 <div class="col-md-4 col-xs-12">
  185.                 <p><a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>">
  186.                 <?php $title = get_the_title($posts[$acf_i]->ID); echo $title; ?> <?php echo $limite; ?></a> <?php echo $id; ?></p>
  187.                 </div>
  188.                 <?php
  189.                 }
  190.               }
  191.               $acf_i++;
  192.             }
  193.           }
  194.  
  195.           echo "</div>";
  196.  
  197.                       $new_content.= ob_get_contents();
  198.                       ob_end_clean();
  199.                   }
  200.                   $new_content .= $content[$i].$marcaParagrafo;
  201.               }
  202.               wp_reset_postdata();
  203.               return $new_content;
  204.           }else{
  205.  
  206.               return $content;
  207.           }
  208.       }else{
  209.  
  210.           # Validating array to avoid warnings (Luiz)
  211.          if (is_array($posts)){
  212.       $limit = count($posts);
  213.      
  214.           }else{
  215.               $limit = 0;
  216.     }
  217.    
  218.     $num_related = (count($posts) < $num_related)?(count($posts)):$num_related;
  219.  
  220.           # $limit = count($posts);
  221.          $marcaParagrafo = "</p>";
  222.           $numParagrafos = count($content);
  223.           $new_content = '';
  224.           $acf_i = 0;
  225.           $c = 0;
  226.  
  227.           $content_orig     = $content;
  228.           $content          = explode($marcaParagrafo, $content);
  229.  
  230.           if(count($content) < ($limit * $related_pos)){
  231.               $marcaParagrafo = "</h2>";
  232.               $content = explode($marcaParagrafo, $content_orig);
  233.               $related_posOrig = $related_pos;
  234.               $related_pos = $related_pos_h;
  235.  
  236.               if(count($content) < $num_related){
  237.  
  238.                   $marcaParagrafo = "</h3>";
  239.                   $content = explode($marcaParagrafo, $content_orig);
  240.                   $numTags = count($content);
  241.  
  242.                   if($numTags < 2 || $numTags < $num_related){
  243.                       $marcaParagrafo = "</p>";
  244.                       $content = explode($marcaParagrafo, $content_orig);
  245.                       $related_pos = floor(($related_posOrig-1)/2);
  246.                   }
  247.               }
  248.           }
  249.  
  250.           $new_content = '';
  251.           $numParagrafos = count($content);
  252.  
  253.           for ($i = 0; $i < $numParagrafos; $i++) {
  254.  
  255.               if ($i % $related_pos == 0 && $i == $related_pos) {
  256.  
  257.                   $c++;
  258.         ob_start();
  259.        
  260.         echo "<div class='row'>";
  261.  
  262.                   if($c < $limit or $c == $limit) {
  263.  
  264.           for($j=0; $j<$num_related; $j++){
  265.            
  266.             if($id != $posts[$acf_i]->ID) {
  267.  
  268.               setup_postdata($posts[$acf_i]);
  269.               $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($posts[$acf_i]->ID), '218thumb' );
  270.               $url = $thumb['0']; ?>
  271.  
  272.               <?php if(is_single()) { ?>
  273.               <div class="col-md-4 col-xs-12">
  274.                 <a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>" class="related-middle-content"><img src="<?php echo $url; ?>" class="img-responsive<?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo " relacionado-amp"; } ?>"></a>
  275.                 <span><a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>" class="related-middle-content">
  276.                 <?php $title = get_the_title($posts[$acf_i]->ID); echo $title; ?></a></span>
  277.               </div>
  278.               <?php } else { ?>
  279.               <div class="col-md-4 col-xs-12">
  280.               <p><a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>">
  281.               <?php $title = get_the_title($posts[$acf_i]->ID); echo $title; ?> <?php echo $limite; ?></a> <?php echo $id; ?></p>
  282.               </div>
  283.               <?php }
  284.             }
  285.             $acf_i++;
  286.           }
  287.         }
  288.        
  289.         echo "</div>";
  290.  
  291.                   $new_content.= ob_get_contents();
  292.                   ob_end_clean();
  293.               }
  294.               $new_content .= $content[$i].$marcaParagrafo;
  295.           }
  296.           return $new_content;
  297.       }
  298.   }
  299. }
  300. add_filter('the_content', 'ctt_related_content', 10);
  301.  
  302. function ctt_rel_shortcode($atts = [], $content = null){
  303.  
  304.   $num_related = 3;
  305.  
  306.   global $post;
  307.  
  308.   $id        = $post->ID;
  309.   $num_related = (isset($atts["itens"]) && (int)$atts["itens"] > 0)?(int)$atts["itens"]:$num_related;
  310.  
  311.   $posts = get_field('relacionadas');
  312.  
  313.   if($posts == ""){
  314.  
  315.  
  316.     //Pesquisa por tag
  317.     if(has_tag()){
  318.  
  319.       $tags      = get_the_tags();
  320.       $num_tags  = count($tags);
  321.       $tag       = $tags[0]->slug;
  322.       $the_query = new WP_Query(
  323.                     array(
  324.                       'tag'          => $tag,
  325.                       'post__not_in' => array($id),
  326.                     )
  327.                   );
  328.       $posts     = $the_query->posts;
  329.       $limit     = (count($posts) < $num_related)?(count($posts)):$num_related;
  330.  
  331.       $new_content = '';
  332.       $acf_i = 0;
  333.       $c = 0;
  334.  
  335.       ob_start();
  336.  
  337.       echo "<div class='row'>";
  338.      
  339.       for($j=0; $j<$limit; $j++){
  340.  
  341.         if($c < $limit or $c == $limit) {
  342.  
  343.           if($id != $posts[$acf_i]->ID) {
  344.            
  345.             setup_postdata($posts[$acf_i]);
  346.             $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($posts[$acf_i]->ID), '218thumb' );
  347.             $url = $thumb['0']; ?>
  348.  
  349.             <?php if(is_single()) { ?>
  350.             <div class="col-md-4 col-xs-12">
  351.               <a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>" class="related-middle-content"><img src="<?php echo $url; ?>" class="img-responsive<?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo " relacionado-amp"; } ?>"></a>
  352.               <span><a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>" class="related-middle-content">
  353.               <?php $title = get_the_title($posts[$acf_i]->ID); echo $title; ?></a></span>
  354.             </div>
  355.             <?php } else { ?>
  356.             <div class="col-md-4 col-xs-12">
  357.             <p><a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>">
  358.             <?php $title = get_the_title($posts[$acf_i]->ID); echo $title; ?> <?php echo $limite; ?></a> <?php echo $id; ?></p>
  359.             </div>
  360.             <?php
  361.             }
  362.           }
  363.           $acf_i++;
  364.         }
  365.       }
  366.  
  367.       echo "</div>";
  368.  
  369.       $new_content = ob_get_contents();
  370.  
  371.       ob_end_clean();
  372.       wp_reset_postdata();
  373.  
  374.       return $new_content;
  375.      
  376.     }elseif(has_category()){
  377.  
  378.       $tags             = get_the_category();
  379.       $num_tags         = count($tags);
  380.       $tag              = $tags[0]->slug;
  381.      
  382.       $args               = array(
  383.                   'category_name' => $tag,
  384.                   'post__not_in'  => array($id),
  385.                 );
  386.       $the_query        = new WP_Query($args);
  387.       $posts            = $the_query->posts;
  388.       $limit            = (count($posts) < $num_related)?(count($posts)):$num_related;
  389.  
  390.  
  391.       $new_content = '';
  392.       $acf_i = 0;
  393.       $c = 0;
  394.  
  395.       ob_start();
  396.  
  397.       echo "<div class='row'>";
  398.      
  399.       for($j=0; $j<$limit; $j++){
  400.  
  401.         if($c < $limit or $c == $limit) {
  402.  
  403.           if($id != $posts[$acf_i]->ID) {
  404.            
  405.             setup_postdata($posts[$acf_i]);
  406.             $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($posts[$acf_i]->ID), '218thumb' );
  407.             $url = $thumb['0']; ?>
  408.  
  409.             <?php if(is_single()) { ?>
  410.             <div class="col-md-4 col-xs-12">
  411.               <a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>" class="related-middle-content"><img src="<?php echo $url; ?>" class="img-responsive<?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo " relacionado-amp"; } ?>"></a>
  412.               <span><a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>" class="related-middle-content">
  413.               <?php $title = get_the_title($posts[$acf_i]->ID); echo $title; ?></a></span>
  414.             </div>
  415.             <?php } else { ?>
  416.             <div class="col-md-4 col-xs-12">
  417.             <p><a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>">
  418.             <?php $title = get_the_title($posts[$acf_i]->ID); echo $title; ?> <?php echo $limite; ?></a> <?php echo $id; ?></p>
  419.             </div>
  420.             <?php
  421.             }
  422.           }
  423.           $acf_i++;
  424.         }
  425.       }
  426.  
  427.       echo "</div>";
  428.  
  429.       $new_content = ob_get_contents();
  430.  
  431.       ob_end_clean();
  432.       wp_reset_postdata();
  433.  
  434.       return $new_content;
  435.     }else{
  436.  
  437.       return $content;
  438.     }
  439.   }else{
  440.  
  441.     # Validating array to avoid warnings (Luiz)
  442.    if (is_array($posts)){
  443.       $limit = count($posts);
  444.      
  445.     }else{
  446.       $limit = 0;
  447.     }
  448.    
  449.     $num_related = (count($posts) < $num_related)?(count($posts)):$num_related;
  450.  
  451.     # $limit = count($posts);
  452.    $marcaParagrafo = "</p>";
  453.     $numParagrafos = count($content);
  454.     $new_content = '';
  455.     $acf_i = 0;
  456.     $c = 0;
  457.  
  458.     $content_orig     = $content;
  459.     $content          = explode($marcaParagrafo, $content);
  460.  
  461.     if(count($content) < ($limit * $related_pos)){
  462.       $marcaParagrafo = "</h2>";
  463.       $content = explode($marcaParagrafo, $content_orig);
  464.       $related_posOrig = $related_pos;
  465.       $related_pos = $related_pos_h;
  466.  
  467.       if(count($content) < $num_related){
  468.  
  469.         $marcaParagrafo = "</h3>";
  470.         $content = explode($marcaParagrafo, $content_orig);
  471.         $numTags = count($content);
  472.  
  473.         if($numTags < 2 || $numTags < $num_related){
  474.           $marcaParagrafo = "</p>";
  475.           $content = explode($marcaParagrafo, $content_orig);
  476.           $related_pos = floor(($related_posOrig-1)/2);
  477.         }
  478.       }
  479.     }
  480.  
  481.     $new_content = '';
  482.  
  483.     ob_start();
  484.    
  485.     echo "<div class='row'>";
  486.  
  487.     if($c < $limit or $c == $limit) {
  488.  
  489.       for($j=0; $j<$num_related; $j++){
  490.        
  491.         if($id != $posts[$acf_i]->ID) {
  492.  
  493.           setup_postdata($posts[$acf_i]);
  494.           $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($posts[$acf_i]->ID), '218thumb' );
  495.           $url = $thumb['0']; ?>
  496.  
  497.           <?php if(is_single()) { ?>
  498.           <div class="col-md-4 col-xs-12">
  499.             <a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>" class="related-middle-content"><img src="<?php echo $url; ?>" class="img-responsive<?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo " relacionado-amp"; } ?>"></a>
  500.             <span><a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>" class="related-middle-content">
  501.             <?php $title = get_the_title($posts[$acf_i]->ID); echo $title; ?></a></span>
  502.           </div>
  503.           <?php } else { ?>
  504.           <div class="col-md-4 col-xs-12">
  505.           <p><a href="<?php the_permalink($posts[$acf_i]->ID); ?><?php if (function_exists("is_amp_endpoint") && is_amp_endpoint()) { echo "amp/"; } ?>">
  506.           <?php $title = get_the_title($posts[$acf_i]->ID); echo $title; ?> <?php echo $limite; ?></a> <?php echo $id; ?></p>
  507.           </div>
  508.           <?php }
  509.         }
  510.         $acf_i++;
  511.       }
  512.     }
  513.    
  514.     echo "</div>";
  515.  
  516.     $new_content.= ob_get_contents();
  517.     ob_end_clean();
  518.  
  519.     return $new_content;
  520.   }
  521. }
  522. add_shortcode('relacionadas', 'ctt_rel_shortcode');
RAW Paste Data