Πως δημιουργούμε σχετικά άρθρα στο WordPress

function tcp_related_posts() {
	
	global $post, $wpdb;
	$backup = $post;  
	$tags = wp_get_post_tags($post->ID);
	$tagIDs = array();
	if ($tags) {
	  $tagcount = count($tags);
	  for ($i = 0; $i < $tagcount; $i++) {
	    $tagIDs[$i] = $tags[$i]->term_id;
	  }
	  $tagIDs = array_diff($tagIDs, array(364, 365, 556));
	  $showposts = get_theme_mod('related_postnum');
	  $showposts = !empty($showposts) ? $showposts : 5;
	  
	  $args=array(
	    'tag__in' => $tagIDs,
	    'post__not_in' => array($post->ID),
		'cat'=> '-5',
	    'showposts'=>$showposts,
	    'caller_get_posts'=>1
	  );
	  $my_query = new WP_Query($args);
	  if( $my_query->have_posts() ) { $related_post_found = true; ?>
		<h3>Σχετικά άρθρα</h3>
	    <?php while ($my_query->have_posts()) : $my_query->the_post(); ?> 
				<a class="title" href="<?php the_permalink() ?>" rel="bookmark"><?php the_post_thumbnail('bloview');?><br><?php the_title(); ?></a>
	    <?php endwhile; ?>
	  <?php }
	}
	
	if(!$related_post_found){ ?>
		<h3>'Δημοφιλή άρθρα</h3>
		<ul>
		<?php
		$posts = get_posts('numberposts='.$showposts.'&offset=0&cat=-5&orderby=rand');
		foreach($posts as $post) { ?>
				<a class="title" href="<?php the_permalink() ?>" rel="bookmark"><?php the_post_thumbnail('bloview');?><br><?php the_title(); ?></a>
		<?php } ?>
		</ul>
		
		<?php 
	}
	wp_reset_query();
}
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Πως κάνουμε λίστα όλους τους συνδυασμούς προϊόντων στο WooCommerce

Έτσι αντί να έχουμε σε dropdown τους συνδυασμούς των προϊόντων τις έχουμε σε λίστα με ξεχωριστό κουμπί “Προσθήκης στο καλάθι”;

function woocommerce_variable_add_to_cart() {
 global $product, $post;
 $variations = $product->get_available_variations();
 ?>
 <table class="toptcptable">
 <tbody>
 <?php 
 foreach ($variations as $key => $value) {
 ?>
 
 <tr>
<td>
 <?php foreach ($value['attributes'] as $attrKey => $attr)  
 {
$tax = str_replace('attribute_', '', $attrKey);
$term_obj = get_term_by('slug', $attr, $tax); 
?>
<td>
<?php echo $term_obj->name; ?>
</td>
 <?php } ?>
 <td>
 <?php echo $value['price_html'];?>
 </td>
 <td>
 <form action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" method="post" enctype='multipart/form-data'>
 <input type="hidden" name="variation_id" value="<?php echo $value['variation_id']?>" />
 <input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
 <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $post->ID ); ?>" />
 <?php
 if(!empty($value['attributes'])){
 foreach ($value['attributes'] as $attr_key => $attr_value) {
 ?>
 <input type="hidden" name="<?php echo $attr_key?>" value="<?php echo $attr_value?>">
 <?php
 }
 }
 ?>
 <button type="submit" class="single_add_to_cart_button button alt"><i class="fas fa-cart-plus"></i></button>
 </form>
 </td>
 </tr>
 
 <?php
 }
 ?>
 </tbody>
 </table>
 <?php 
}
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Αφαίρεση εικόνων από το sitemap του YOAST SEO

Απλά προσθέστε αυτό το φίλτρο στο αρχείο functions.php

add_filter( 'wpseo_xml_sitemap_img', '__return_false' );
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Αριθμός των queries και χρόνος εκτέλεσης σε php

Πολλές φορές για λόγους debug χρειάζεται να δούμε τον χρόνο εκτέλεσης ενός script ή μιας σελίδας. Το παρακάτω κομμάτι κώδικα μας δίνει κάποιες πληροφορίες ώστε να βγάλουμε συμπεράσματα.

<?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds.
Δημοσιεύθηκε στη PHP | Σχολιάστε

Ρόλοι και δικαιώματα στο WordPress. Πως προσθέτουμε ή αφαιρούμε δικαιώματα σε ρόλους του WordPress.

Υπάρχουν 5 βασικές ομάδες στο WordPress. Ανάλογα με την ομάδα του WordPress στην οποία συμμετέχει ένας χρήστης έχει και τα αντίστοιχα δικαιώματα. Ορίζουμε ως ομάδα (δικαιωμάτων) τον “ρόλο” όπως αναφέρεται στο wordpress για να καταλαβαινόμαστε.

  1. Super Admin
  2. Administrator
  3. Editor
  4. Author
  5. Contributor
  6. Subscriber.

Ο πρώτος ρόλος του Super-Admin υπάρχει μόνο  στα multisites. Ως administrator ορίζονται όλοι οι έξτρα διαχειριστές που δημιουργούνται μέσω του admin panel.

Πίνακας με βάση τα δικαιώματα του κάθε ρόλου.

Capability Super Admin Administrator Editor Author Contributor Subscriber
create_sites Y
delete_sites Y
manage_network Y
manage_sites Y
manage_network_users Y
manage_network_plugins Y
manage_network_themes Y
manage_network_options Y
upload_plugins Y
upload_themes Y
upgrade_network Y
setup_network Y
Capability Super Admin Administrator Editor Author Contributor Subscriber
activate_plugins Y Y
(single site or
enabled by network setting)
create_users Y Y (single site)
delete_plugins Y Y (single site)
delete_themes Y Y (single site)
delete_users Y Y (single site)
edit_files Y Y (single site)
edit_plugins Y Y (single site)
edit_theme_options Y Y
edit_themes Y Y (single site)
edit_users Y Y (single site)
export Y Y
import Y Y
Capability Super Admin Administrator Editor Author Contributor Subscriber
install_plugins Y Y (single site)
install_themes Y Y (single site)
list_users Y Y
manage_options Y Y
promote_users Y Y
remove_users Y Y
switch_themes Y Y
update_core Y Y (single site)
update_plugins Y Y (single site)
update_themes Y Y (single site)
edit_dashboard Y Y
customize Y Y
delete_site Y Y
Capability Super Admin Administrator Editor Author Contributor Subscriber
moderate_comments Y Y Y
manage_categories Y Y Y
manage_links Y Y Y
edit_others_posts Y Y Y
edit_pages Y Y Y
edit_others_pages Y Y Y
edit_published_pages Y Y Y
publish_pages Y Y Y
delete_pages Y Y Y
delete_others_pages Y Y Y
delete_published_pages Y Y Y
delete_others_posts Y Y Y
delete_private_posts Y Y Y
edit_private_posts Y Y Y
read_private_posts Y Y Y
delete_private_pages Y Y Y
edit_private_pages Y Y Y
read_private_pages Y Y Y
unfiltered_html Y Y (single site) Y (single site)
Capability Super Admin Administrator Editor Author Contributor Subscriber
edit_published_posts Y Y Y Y
upload_files Y Y Y Y
publish_posts Y Y Y Y
delete_published_posts Y Y Y Y
edit_posts Y Y Y Y Y
delete_posts Y Y Y Y Y
Capability Super Admin Administrator Editor Author Contributor Subscriber
read Y Y Y Y Y Y

Τώρα ας πούμε ότι θέλουμε να προσθέσουμε ή να αφαιρέσουμε δικαιώματα από κάθε ομάδα. Για να προσθέσουμε χρησιμοποιούμε το παρακάτω fucntion add_cap().

<?php
   $editor = get_role('editor');
   $editor->add_cap('manage_options');
?> 

Εάν θέλουμε να αφαιρέσουμε χρησιμοποιούμε το remove_cap().

<?php
   $editor = get_role('editor');
   $editor->remove_cap('manage_options');
?>
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Διαγραφή προγράμματος από το Start Up των Windows 10

Πολλές φορές απεγκαθιστούμε ένα πρόγραμμα αλλά αυτό παραμένει στο startup στα Windows 10. Για παράδειγμα το buildbox ναι μεν έχει shortcut απεγκατάστασης αλλά τα φιντάνια εκεί δεν το διαγράφουν αλλά στο αφήνουν μέσα στο σύστημα σου προφανώς για λόγους marketing. Ε όχι ρε φίλε δεν γουσταρίζω. Τότε λοιπόν τι κάνουμε;

  • Διαγράφουμε τον φάκελο του προγράμματος από το Program Files.
  • Κατεβάζουμε το Autoruns και το διαγράφουμε από την εκκίνηση. Δεν το απενεργοποιούμε απλά. https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns
Δημοσιεύθηκε στη Software | Σχολιάστε

Πάντα redirect http to https


Options -Indexes
ErrorDocument 403 https://%{HTTP_HOST}

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Δημοσιεύθηκε στη Linux | Σχολιάστε

Προσθήκη πεδίου default ομάδας στο Prestashop ή έξτρα πεδία στην εγγραφή

Πάμε στο authentication.tpl που βρίσκεται στο φάκελο του θέματος και προσθέτουμε ένα checkbox μέσα στην φόρμα.

<div class="checkbox">
<input type="checkbox" name="nautiko" value="1">
<label for="nautiko">ΑΝΗΚΩ ΣΤΟ ΠΟΛΕΜΙΚΟ ΝΑΥΤΙΚΟ:</label>
</div>

Έπειτα ανοίγουμε το Controllers/front/AuthController.php. Αρχικά παίρνουμε την μεταβλητή από το post κάτω από την δημιουργία του πελάτη.

// Preparing customer
     $customer = new Customer();
     $nautiko = $_POST['nautiko'];

Ψάχνουμε στο αρχείο πιο κάτω έχει τα default groups. Προσθέτουμε αυτό.

if ($nautiko == 1) 
	{
	$customer->addGroups(array(4));
	$customer->id_default_group = 4;
	}
Δημοσιεύθηκε στη Prestashop | Σχολιάστε

Σύνδεση του προγράμματος με Windows Forms (VB.NET) σε MySql

Ενοείται βάζουμε το lib


Imports MySql.Data.MySqlClient

Τώρα τοποθετούμε τα connection strings και όλους τους βασικούς μας ορισμούς

Dim myConnectionString As String
myConnectionString = "server=127.0.0.1;" & "uid=root;" & "pwd=OKWDIKOSMAS;" & "database=IVASIDEDOMENWNMAS"
Dim conn As New MySql.Data.MySqlClient.MySqlConnection(myConnectionString)
Δημοσιεύθηκε στη .net | Σχολιάστε

Απλή λύση για τον GDPR

Το παρακάτω αποτελεί μια απλή λύση για τον νέο GDPR νόμο. Δεν είναι απόλυτη η χρήση του σε όλες τις περιπτώσεις. Πρέπει να συμβουλευτείτε τον νομικό σας σύμβουλο σε κάθε περίπτωση. Το κομμάτι κώδικα μπαίνει στο head.

 

<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.css" />
<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.js"></script>
<script>
window.addEventListener("load", function(){
window.cookieconsent.initialise({
  "palette": {
    "popup": {
      "background": "#eaf7f7",
      "text": "#5c7291"
    },
    "button": {
      "background": "transparent",
      "text": "#56cbdb",
      "border": "#56cbdb"
    }
  },
  "content": {
    "message": "Η Ιστοσελίδα χρησιμοποιεί cookies.  ",
    "dismiss": "Ενημερώθηκα",
    "link": "Μάθετε τι είναι τα cookies."
  }
})});
</script>
Δημοσιεύθηκε στη T-Edit | Ετικέτες: | Σχολιάστε

Πως βρίσκουμε ποια αρχεία πιάνουν χώρο σε linux

Το πρώτο βλέπουμε τον χώρο στον δίσκο. Το δεύτερο ποιοι φάκελοι ή αρχεία πιάνουν τον χώρο. Το τρίτο τον χώρο σε κάθε δίσκο.

du -sh

du -sh /var/lib/mysql/*

 df -h

Δημοσιεύθηκε στη Linux | Σχολιάστε

Προεπιλεγμένες στοιχίσεις στο WordPress

/*
 * Default WP Alignment Classes
 *****************************************************************************/

.aligncenter,.alignleft,.alignright {
    display: block;
    padding: 0;
}

.aligncenter {
    float: none;
    margin: .5em auto 1em;
}

.alignright {
    float: right;
    margin: .5em 0 1em 1em;
}

.alignleft {
    float: left;
    margin: .5em 1em 1em 0;
}

.wp-caption {
    padding: 5px 0;
    border: 1px solid #555;
    background: #444;
    text-align: center;
}

.wp-caption img {
    display: inline;
}

.wp-caption p.wp-caption-text {
    margin: 5px 0 0;
    padding: 0;
    text-align: center;
    font-size: 75%;
    font-weight: 100;
    font-style: italic;
    color: #ddd;
}
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Ειδοποίηση όταν περνάμε μικρή εικόνα στο WordPress

Προσθέστε το παρακάτω κομμάτι κώδικα στο functions.php.

add_filter('wp_handle_upload_prefilter','tcp_eidopoisiphoto');
function tcp_eidopoisiphoto($file)
{
    $img=getimagesize($file['tmp_name']);
    $minimum = array('width' => '640', 'height' => '480');
    $width= $img[0];
    $height =$img[1];

    if ($width < $minimum['width'] )
        return array("error"=>"ΒΑΛΕ ΜΕΓΑΛΗ ΦΩΤΟΓΡΑΦΙΑ!!! ΤΟΥΛΑΧΙΣΤΟΝ {$minimum['width']} σε μήκος. Αυτη που ανέβασες είναι: $width px");
    else
        return $file; 
}
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Εισαγωγή recaptcha σε Prestashop

Όταν οι smammers μας σπάνε τα νεύρα στο prestashop τότε χρησιμοποιούμε το recapcha της Google. Στις περισσότερες περιπτώσεις θα μας προστατέψει από ενοχλητικά μηνύματα.

1. Στο contact-form.tpl του template μας πάμε ακριβώς πριν το submit button. Κάτι σαν το κάτω κομμάτι κώδικα.

<div class="submit">
 <button type="submit" name="submitMessage" id="submitMessage" class="button"><span>{l s='Send'}<i class="icon-chevron-right right"></i></span></button>
 </div>
 </form>

Προσθέτουμε τις δύο γραμμές (όπου key το key από το recaptcha)

<script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" data-sitekey="key"></div>


2. Πηγαίνουμε στο controllers/front/ContactController.php ή στο αντίστοιχο override.
if (Tools::isSubmit('submitMessage')) {
 $extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');
 $file_attachment = Tools::fileAttachment('fileUpload');
 $message = Tools::getValue('message'); // Html entities is not usefull, iscleanHtml check there is no bad html tags.
 $id_order = (int)$this->getOrder();
 if (!($from = trim(Tools::getValue('from'))) || !Validate::isEmail($from)) {
 $this->errors[] = Tools::displayError('Invalid email address.');
//ΠΡΟΣΘΕΤΟΥΜΕ ΑΥΤΟ ΤΟ ΚΟΜΜΑΤΙ  ΑΠΟ ΕΔΩ
 } elseif (!($gcaptcha = (int)(Tools::getValue('g-recaptcha-response')))) {
 $this->errors[] = Tools::displayError('Captcha error');
// ΜΕΧΡΙ ΕΔΩ
 
Δημοσιεύθηκε στη Prestashop | Σχολιάστε

Πως αλλάζουμε domain μέσω του wp-config

Το προσθέτουμε στο wp-config.php στον γονικό φάκελο.

define('RELOCATE',true);
define('WP_HOME','http://neodomain.com');
define('WP_SITEURL','http://neodomain.com');
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Αλλάζει text editor το WordPress. Το όνομα αυτού Gutenberg

O text editor που χρησιμοποιεί το WordPress τα τελευταία χρόνια, μένει λίγο πολύ ο ίδιος. Οι όποιες αλλαγές γίνονται, είναι συνήθως για την διόρθωση μικροσφαλμάτων. Ενώ λοιπόν αυτό δεν είναι απαραίτητα κακό, οι ιθύνοντες αποφάσισαν να κάνουν μια μεγάλη αλλαγή με στόχο να κάνουν πιο εύκολη την δημιουργία και επεξεργασία άρθρων. Αν και προσωπικά δεν βλέπω το πρόβλημα.

Γιατί το Gutenberg;
Επειδή η χρήση smartphones για την δημιουργία άρθρων αυξάνει, υπήρχε η ανάγκη για αλλαγή στο styling.Το gutenberg γενικά προσαρμόζεται καλύτερα σε μικρότερες οθόνες σε σχέση με τον τρέχοντα text editor.  Μέχρι στιγμής η beta έκδοση του Gutenberg αριθμεί περισσότερες από 70.000 ενεργές εγκαταστάσεις. Ο ιδρυτής Matt Mullenweg δήλωσε πως θα ενσωματωθεί στο WordPress όταν ξεπεράσεις τις 100.000.

Πώς να εγκαταστήσετε Gutenberg
Στα plugins πατάτε Νέο Plugin και αναζητάτε το Gutenberg.

Κάθε αρχή και δύσκολη. Πάρτε μια γεύση.

Η μορφοποίηση του κειμένου γίνεται αφού έχετε επιλέξει το κομμάτι του κειμένου που θέλετε να κάνετε edit. Πλέον μπορείτε να βάλετε πίνακες αλλά και να φτιάξετε blocks με διαφορετικό style. Γενικώς υπάρχουν πολλά ωραία καινούργια πραγματάκια όπως font-size και background colors.

Δημοσιεύθηκε στη T-Edit | Σχολιάστε

Νέα έκδοση του Google Search Console

Το Search Console παρουσιάζει ένα ανασχεδιασμένο προϊόν, για να σας βοηθήσει να διαχειριστείτε την παρουσία σας στην Αναζήτηση Google. Το νέο Search Console δημιουργήθηκε ξανά από την αρχή, για να παρέχει τα εργαλεία και τις πληροφορίες που ζητούν οι κάτοχοι ιστοτόπων και οι SEO. Μπορείτε πλέον να επιβεβαιώσετε ποιες από τις σελίδες σας έχουν ευρετηριαστεί και να λαμβάνετε πληροφορίες σχετικά με τον τρόπο επιδιόρθωσης των σφαλμάτων ευρετηρίασης. Μπορείτε επίσης να παρακολουθήσετε την απόδοσή σας στην Αναζήτηση Google με 16 μήνες δεδομένων (για την ενεργοποίηση συγκρίσεων από έτος σε έτος).

Μπορείτε να δείτε το νέο Google Search Console εδώ.

Δημοσιεύθηκε στη T-Edit | Σχολιάστε

Πως βάζουμε έξτρα πεδία στους συντάκτες του WordPress

Εισάγουμε την παρακάτω συνάρτηση στο functions.php. Έτσι θα προσθέσουμε τέσσερα πεδία URL για Facebook, Twitter, Google Plus και Ιδιότητα.

function tcp_extra_fields_author($profile_fields) {
$profile_fields['twitter'] = 'Twitter URL';
$profile_fields['facebook'] = 'Facebook URL';
$profile_fields['gplus'] = 'Google+ URL';
$profile_fields['idiot'] = 'Ιδιότητα';
return $profile_fields;
}
add_filter('user_contactmethods', 'tcp_extra_fields_author');

Για να καλέσουμε καθένα από αυτά τα πεδία στο θέμα μας χρησιμοποιούμε τα παρακάτω.

the_author_meta('facebook');
the_author_meta('twitter');
the_author_meta('gplus');
the_author_meta('idiot');
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Function για την διαγραφή των transient στο WordPress

Χρησιμοποιούμε το παρακάτω function για την διαγραφή προσωρινών δεδομένων από την βάση μας του WordPress, τα οποία πολλές φορές δημιουργούν καθυστερήσεις και μικροπροβλήματα.

function clear_transients(){
        global $wpdb;
        $sql ="DELETE  FROM {$wpdb->options} WHERE option_name like '\_transient\_namespace\_%' OR option_name like '\_transient\_timeout\_namespace\_%'";
		$wpdb->query($sql);
}
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Πως αλλάζουμε domain στο WordPress μέσω SQL ή phpMyAdmin

Στην κονσόλα γράφουμε τις παρακάτω εντολές:

UPDATE wp_posts SET guid = replace(guid, 'https://www.palio','http://www.neo');
UPDATE wp_posts SET guid = replace(guid, 'https://palio','http://neo');
UPDATE wp_posts SET post_content = replace(post_content, 'https://www.palio', 'http://www.neo');
UPDATE wp_posts SET post_content = replace(post_content, 'https://palio', 'http://neo');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://www.palio','http://www.neo');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://palio','http://neo');
Δημοσιεύθηκε στη SQL | Σχολιάστε

Πως κάνουμε symlink φακέλους σε Linux

Αν θέλουμε να δημιουργήσουμε symlink (σκεφτείτε το ως συντόμευση) σε έναν φάκελο χρησιμοποιούμε την παρακάτω εντολή.

ln -s  /home/onomaxristi/public_html/folderpoupairnoumetadedomena/* /home/onomaxristi/neosfolder/folderpoudinoumetadedomena

Για να διαγράψουμε την συντόμευση πατάμε:

unlink folderpoudinoumetadedomena
Δημοσιεύθηκε στη Linux | Σχολιάστε

Εισαγωγή διαφήμισης μετά την δεύτερη παράγραφο στο WordPress

Αν θέλουμε να εισάγουμε διαφήμιση μέσα στο κείμενο αυτόματα χρησιμοποιούμε την παρακάτω συνάρτηση. Στον ορισμό $ad_code βάζουμε τον κώδικα της διαφήμισής μας, ενώ στο $closing_p βάζουμε το tag που ορίζουμε ως delimiter. Στην περίπτωσή μας το

Το && !in_category(array(9,71)) μπορεί να αγνοηθεί. Στην πραγματικότητα πρόκειται περί συνθήκης για την εξαίρεση σε συγκεκριμένες κατηγορίες.

add_filter( 'the_content', 'diafimisi' );

function diafimisi( $content ) {

$ad_code = '';

if ( is_single() && !in_category(array(9,71))) {
return vale_meta_tin_deuteri_paragrafo( $ad_code, 2, $content );
}

return $content;
}


function vale_meta_tin_deuteri_paragrafo( $insertion, $paragraph_id, $content ) {
$closing_p = '

'; $paragraphs = explode( $closing_p, $content ); foreach ($paragraphs as $index => $paragraph) { if ( trim( $paragraph ) ) { $paragraphs[$index] .= $closing_p; } if ( $paragraph_id == $index + 1 ) { $paragraphs[$index] .= $insertion; } } return implode( '', $paragraphs ); }
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Πως βλέπουμε όλα τα custom fields στο dropdown του άρθρου στο WordPress

Το dropdown στην δημιουργία ή επεξεργασία άρθου με τα custom fields (ειδικά πεδία), στην default ρύθμισή του έχει μέγιστο αριθμό εμφανιζόμενων ειδικών πεδίων τριάντα. Για να αυξήσουμε το όριο αυτό χρησιμοποιούμε την παρακάτω συνάρτηση.

add_filter( 'postmeta_form_limit', 'meta_limit_increase' );
function meta_limit_increase( $limit ) {
return 100;
}

echo get_post_custom_values('tcp_link', get_the_ID())[0]
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Πως χρησιμοποιούμε το ID της παραγγελίας στο Prestashop ως Κωδικό Παραγγελίας

Πως χρησιμοποιούμε το ID της παραγγελίας ως Κωδικό Παραγγελίας. Στον φάκελο Classes/PaymentModule αλλάζουμε το σχετικό κομμάτι κώδικα με το παρακάτω.

if (!$result) {
PrestaShopLogger::addLog('PaymentModule::validateOrder – Order cannot be created', 3, null, 'Cart', (int)$id_cart, true);
throw new PrestaShopException('Can\’t save Order');
}

$order->reference = str_pad($order->id, 9, '0', STR_PAD_LEFT);
$order->update();
Δημοσιεύθηκε στη Prestashop | Σχολιάστε

Πως απενεργοποιούμε updates για συγκεκριμένα plugins

Υπάρχουν περιπτώσεις που δεν θέλουμε να κάνουμε update συγκεκριμένα plugins. Εισάγουμε τον παρακάτω κώδικα στο functions.php. Όπου pluginfolder το όνομα του φακέλου του plugin και όπου mainfunctionsfile το κεντρικό class του. Συνήθως έχουν το ίδιο όνομα.
ΠΡΟΣΟΧΗ: Τα updates βγαίνουν κυρίως για λόγους ασφαλείας. Το καλύτερο θα ήταν να μην το χρησιμοποιήσετε εάν δεν ξέρετε ακριβώς γιατί το κάνετε.

function tcp_disable_plugin_updates( $getdat ) {
unset( $getdat->response['pluginfolder/mainfunctionsfile.php'] );
return $getdat;
}
add_filter( 'site_transient_update_plugins', 'tcp_disable_plugin_updates' );
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Μετατροπή του default search του WordPress σε custom type search

Μετατροπή του default search του WordPress σε custom type search (π.χ. WooCommerce) .Χρησιμοποιούμε το παρακάτω function:

function tcp_search_filter( $query ) {
    if ( $query->is_search ) {
        $query->set( 'post_type', array('product') );
    }
    return $query;
}

add_filter('pre_get_posts','tcp_search_filter');
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Μετατροπή των domain σε ενεργά link μέσα σε ένα string

Χρησιμοποιούμε το παρακάτω function ως echo makeLinks($metavlitikeimenou);

function makeLinks($str) {
	$reg_exUrl = "/(www)?[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
	$urls = array();
	$urlsToReplace = array();
	if(preg_match_all($reg_exUrl, $str, $urls)) {
		$numOfMatches = count($urls[0]);
		$numOfUrlsToReplace = 0;
		for($i=0; $i<$numOfMatches; $i++) {
			$alreadyAdded = false;
			$numOfUrlsToReplace = count($urlsToReplace);
			for($j=0; $j<$numOfUrlsToReplace; $j++) {
				if($urlsToReplace[$j] == $urls[0][$i]) {
					$alreadyAdded = true;
				}
			}
			if(!$alreadyAdded) {
				array_push($urlsToReplace, $urls[0][$i]);
			}
		}
		$numOfUrlsToReplace = count($urlsToReplace);
		for($i=0; $i<$numOfUrlsToReplace; $i++) {
			$str = str_replace($urlsToReplace[$i], "<a target='blank' href=\"http://".$urlsToReplace[$i]."\">".$urlsToReplace[$i]."</a> ", $str);
		}
		return $str;
	} else {
		return $str;
	}
}
Δημοσιεύθηκε στη PHP | Σχολιάστε

Δημιουργία νέων status στα άρθρα του WordPress

function create_new_status_tcp(){
	register_post_status( 'giadiorthwseis', array(
		'label'                     => _x( 'Προς Διόρθωση', 'post' ),
		'public'                    => false,
		'internal'                    => true,
		'exclude_from_search'       => false,
		'show_in_admin_all_list'    => true,
		'show_in_admin_status_list' => true,
		'label_count'               => _n_noop( 'Προς Διόρθωση<span class="count">(%s)</span>', 'Προς Διόρθωση<span class="count">(%s)</span>' ),
	) );
}
add_action( 'init', 'create_new_status_tcp' );

function create_new_status_tcp_dropdown()
{
    ?>
    <script>
    jQuery(document).ready(function($){
        $("select#post_status").append("<option value=\"giadiorthwseis\" <?php selected('giadiorthwseis', $post->post_status); ?>>Προς Διόρθωση</option>");
    });
    </script>
    <?php
}

add_action( 'post_submitbox_misc_actions', 'create_new_status_tcp_dropdown');
Δημοσιεύθηκε στη Wordpress | Σχολιάστε

Query για να παίρνουμε ιεραρχικά τις κατηγορίες στο Prestashop

SELECT c.id_parent, c.id_category, cl.name as name,level_depth FROM mm_category c LEFT JOIN mm_category_lang cl ON (c.id_category = cl.id_category AND id_lang = '2') LEFT JOIN mm_category_group cg ON (cg.`id_category` = c.id_category) LEFT JOIN `mm_category_shop` cs ON (c.`id_category` = cs.`id_category` ) WHERE c.id_category <> '1' GROUP BY c.id_category ORDER BY level_depth ASC,c.id_category ASC, cs.position ASC,c.`id_parent` ASC
Δημοσιεύθηκε στη Prestashop | Σχολιάστε

Διαθεσιμότητες των ιδιοτήτων προϊόντων

{$product.quantity} γίνεται {$product.quantity_all_versions}
Δημοσιεύθηκε στη Prestashop | Σχολιάστε