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
}
Αφαίρεση εικόνων από το sitemap του YOAST SEO
Απλά προσθέστε αυτό το φίλτρο στο αρχείο functions.php
add_filter( 'wpseo_xml_sitemap_img', '__return_false' );
Αριθμός των queries και χρόνος εκτέλεσης σε php
Πολλές φορές για λόγους debug χρειάζεται να δούμε τον χρόνο εκτέλεσης ενός script ή μιας σελίδας. Το παρακάτω κομμάτι κώδικα μας δίνει κάποιες πληροφορίες ώστε να βγάλουμε συμπεράσματα.
<?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds.
Ρόλοι και δικαιώματα στο WordPress. Πως προσθέτουμε ή αφαιρούμε δικαιώματα σε ρόλους του WordPress.
Υπάρχουν 5 βασικές ομάδες στο WordPress. Ανάλογα με την ομάδα του WordPress στην οποία συμμετέχει ένας χρήστης έχει και τα αντίστοιχα δικαιώματα. Ορίζουμε ως ομάδα (δικαιωμάτων) τον “ρόλο” όπως αναφέρεται στο wordpress για να καταλαβαινόμαστε.
- Super Admin
- Administrator
- Editor
- Author
- Contributor
- 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');
?>
Διαγραφή προγράμματος από το Start Up των Windows 10
Πολλές φορές απεγκαθιστούμε ένα πρόγραμμα αλλά αυτό παραμένει στο startup στα Windows 10. Για παράδειγμα το buildbox ναι μεν έχει shortcut απεγκατάστασης αλλά τα φιντάνια εκεί δεν το διαγράφουν αλλά στο αφήνουν μέσα στο σύστημα σου προφανώς για λόγους marketing. Ε όχι ρε φίλε δεν γουσταρίζω. Τότε λοιπόν τι κάνουμε;
- Διαγράφουμε τον φάκελο του προγράμματος από το Program Files.
- Κατεβάζουμε το Autoruns και το διαγράφουμε από την εκκίνηση. Δεν το απενεργοποιούμε απλά. https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns
Πάντα 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]
Προσθήκη πεδίου 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)
Απλή λύση για τον 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>
Πως βρίσκουμε ποια αρχεία πιάνουν χώρο σε linux
Το πρώτο βλέπουμε τον χώρο στον δίσκο. Το δεύτερο ποιοι φάκελοι ή αρχεία πιάνουν τον χώρο. Το τρίτο τον χώρο σε κάθε δίσκο.
du -sh
du -sh /var/lib/mysql/*
df -h
Προεπιλεγμένες στοιχίσεις στο 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
Προσθέστε το παρακάτω κομμάτι κώδικα στο 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;
}
Εισαγωγή 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');
Αλλάζει 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.
Νέα έκδοση του Google Search Console
Το Search Console παρουσιάζει ένα ανασχεδιασμένο προϊόν, για να σας βοηθήσει να διαχειριστείτε την παρουσία σας στην Αναζήτηση Google. Το νέο Search Console δημιουργήθηκε ξανά από την αρχή, για να παρέχει τα εργαλεία και τις πληροφορίες που ζητούν οι κάτοχοι ιστοτόπων και οι SEO. Μπορείτε πλέον να επιβεβαιώσετε ποιες από τις σελίδες σας έχουν ευρετηριαστεί και να λαμβάνετε πληροφορίες σχετικά με τον τρόπο επιδιόρθωσης των σφαλμάτων ευρετηρίασης. Μπορείτε επίσης να παρακολουθήσετε την απόδοσή σας στην Αναζήτηση Google με 16 μήνες δεδομένων (για την ενεργοποίηση συγκρίσεων από έτος σε έτος).
Πως βάζουμε έξτρα πεδία στους συντάκτες του 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');
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);
}
Πως αλλάζουμε 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');
Πως κάνουμε symlink φακέλους σε Linux
Αν θέλουμε να δημιουργήσουμε symlink (σκεφτείτε το ως συντόμευση) σε έναν φάκελο χρησιμοποιούμε την παρακάτω εντολή.
ln -s /home/onomaxristi/public_html/folderpoupairnoumetadedomena/* /home/onomaxristi/neosfolder/folderpoudinoumetadedomena
Για να διαγράψουμε την συντόμευση πατάμε:
unlink folderpoudinoumetadedomena
Εισαγωγή διαφήμισης μετά την δεύτερη παράγραφο στο 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 );
}
Πως βλέπουμε όλα τα 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]
Πως χρησιμοποιούμε το 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' );
Μετατροπή του 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');
Μετατροπή των 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;
}
}
Δημιουργία νέων 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');
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
Σχολιάστε