Total User Count WordPress using Shortcode
To function παρακάτω δημιουργεί shortcode
// Function to return user count
function tcp_user_count() {
$usercount = count_users();
$result = $usercount['total_users'];
return $result;
}
// Creating a shortcode to display user count
add_shortcode('tuser_count', 'tcp_user_count');
Για page/post χρησιμοποιούμε το shortcode [tuser_count]. Για να το βάλουμε στην php echo do_shortcode(‘[tuser_count]’);
Εξαγωγή των άρθρων με βάση την κατηγορία
SELECT DISTINCT
post_title
, concat('https://www.thewebsite.gr/',post_name)
,(SELECT group_concat(wp_terms.name separator ', ')
FROM wp_terms
INNER JOIN wp_term_taxonomy on wp_terms.term_id = wp_term_taxonomy.term_id
INNER JOIN wp_term_relationships wpr on wpr.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
WHERE taxonomy= 'category' and wp_posts.ID = wpr.object_id
) AS "Categories"
FROM wp_posts
WHERE post_type = 'post'
AND post_status = 'publish'
ORDER BY
id DESC
Μετατροπή όλων των πινάκων σε InnoDB από MyISAM
Το InnoDB είναι πιο γρήγορο για το wordpress. Εκτός αυτού είναι λιγότερο πιθανό να κρασάρουν πίνακες.
SET @DATABASE_NAME = 'name_of_your_db';
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statements
FROM information_schema.tables AS tb
WHERE table_schema = @DATABASE_NAME
AND `ENGINE` = 'MyISAM'
AND `TABLE_TYPE` = 'BASE TABLE'
ORDER BY table_name DESC;
Για stored procedure:
DROP PROCEDURE IF EXISTS convertToInnodb;
DELIMITER //
CREATE PROCEDURE convertToInnodb()
BEGIN
mainloop: LOOP
SELECT TABLE_NAME INTO @convertTable FROM information_schema.TABLES
WHERE `TABLE_SCHEMA` LIKE DATABASE()
AND `ENGINE` LIKE 'MyISAM' ORDER BY TABLE_NAME LIMIT 1;
IF @convertTable IS NULL THEN
LEAVE mainloop;
END IF;
SET @sqltext := CONCAT('ALTER TABLE `', DATABASE(), '`.`', @convertTable, '` ENGINE = INNODB');
PREPARE convertTables FROM @sqltext;
EXECUTE convertTables;
DEALLOCATE PREPARE convertTables;
SET @convertTable = NULL;
END LOOP mainloop;
END//
DELIMITER ;
CALL convertToInnodb();
DROP PROCEDURE IF EXISTS convertToInnodb;
Ημερομηνία και ώρα ανανέωσης Δεδομένων
1. New Blank Query.
2. Advanced Editor
let
Source = #table(type table[Date Last Refreshed=datetime], {{DateTime.LocalNow()}})
in
Source
Αποθήκευση των tabs σε διαφορετικό path με Macro
Οι καρτέλες αποθηκεύονται ως αυτοτελή excel. Οι τιμές των κελιών τους αποθηκεύονται ως values.
Option Explicit
Public Sub MISCSV()
Dim wbkExport As Workbook
Dim shtToExport As Worksheet
Set shtToExport = ThisWorkbook.Worksheets("mis")
Set wbkExport = Application.Workbooks.Add
shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
Application.DisplayAlerts = False
Worksheets("mis").Cells.Copy
Worksheets("mis").Cells.PasteSpecial xlPasteValues
wbkExport.SaveAs Filename:="C:\MIS\mis.xlsx"
Application.DisplayAlerts = True
wbkExport.Close SaveChanges:=False
Set shtToExport = ThisWorkbook.Worksheets("PORTFOLIO STATISTICS")
Set wbkExport = Application.Workbooks.Add
shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
Application.DisplayAlerts = False
Worksheets("Portfolio Statistics").Cells.Copy
Worksheets("Portfolio Statistics").Cells.PasteSpecial xlPasteValues
wbkExport.SaveAs Filename:="C:\mis\PORTFOLIO STATISTICS.xlsx"
Application.DisplayAlerts = True
wbkExport.Close SaveChanges:=False
Set shtToExport = ThisWorkbook.Worksheets("DAILY REVAL")
Set wbkExport = Application.Workbooks.Add
shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
Application.DisplayAlerts = False
Worksheets("daily reval").Cells.Copy
Worksheets("daily reval").Cells.PasteSpecial xlPasteValues
wbkExport.SaveAs Filename:="C:\mis\DAILY REVAL.xlsx"
Application.DisplayAlerts = True
wbkExport.Close SaveChanges:=False
Set shtToExport = ThisWorkbook.Worksheets("PORTFOLIO BENCHMARK")
Set wbkExport = Application.Workbooks.Add
shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
Application.DisplayAlerts = False
Worksheets("PORTFOLIO BENCHMARK").Cells.Copy
Worksheets("PORTFOLIO BENCHMARK").Cells.PasteSpecial xlPasteValues
wbkExport.SaveAs Filename:="C:\mis\PORTFOLIO BENCHMARK.xlsx"
Application.DisplayAlerts = True
wbkExport.Close SaveChanges:=False
Set shtToExport = ThisWorkbook.Worksheets("SYNOLA")
Set wbkExport = Application.Workbooks.Add
shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
Application.DisplayAlerts = False
Worksheets("SYNOLA").Cells.Copy
Worksheets("SYNOLA").Cells.PasteSpecial xlPasteValues
wbkExport.SaveAs Filename:="C:\mis\SYNOLA.xlsx"
Application.DisplayAlerts = True
wbkExport.Close SaveChanges:=False
MsgBox "ALL DONE"
End Sub
Δημοσιεύθηκε στη Microsoft Excel
Σχολιάστε
Αποθήκευση σε διαφορετικό path με Macro
Sub SaveReportMIS()
ActiveWorkbook.SaveCopyAs "Z:\BondsTest\BondsReport.xls"
ActiveWorkbook.Save
MsgBox "Saved"
End Sub
Δημοσιεύθηκε στη Microsoft Excel
Σχολιάστε
Date Dimension Power bi
Dates =
VAR CurrentDate = TODAY()
RETURN
ADDCOLUMNS (
CALENDAR( DATE( 1900; 1; 1); DATE( 2022; 12; 31 ) );
"Year"; YEAR([Date]);
"Month in Year"; MONTH([Date]);
"Month"; FORMAT([Date];"mmm");
"Quarter in Year"; QUARTER([Date]);
"Quarter"; CONCATENATE("Q"; QUARTER([Date]) );
"Month & Year Sort"; FORMAT( [Date]; "yyyymm" );
"Month & Year"; FORMAT([Date];"MMM yyyy");
"Month Offset"; DATEDIFF( CurrentDate; [Date]; MONTH );
"Date Offset"; DATEDIFF( CurrentDate; [Date]; DAY )
)
Max Selected Date (in context) =
MAXX(
KEEPFILTERS(
VALUES( Dates[Date] )
);
CALCULATE(
MIN( Dates[Date] )
)
)
Min Selected Date (in context) =
MINX(
KEEPFILTERS(
VALUES( Dates[Date] )
);
CALCULATE(
MIN( Dates[Date] )
)
)
BankCountNewCustomers =
//COUNTROWS(FILTER(Customers, Customers[DateRegistered].[Year] >= [NewRegisteredMeasure])) + 0
var MINDATE = [Min Selected Date (in context)]
VAR MAXDATE = [Max Selected Date (in context)]
var datasetd = CALCULATETABLE(
values(Customers[gid]); Customers[DateRegistered] >= MINDATE && Customers[DateRegistered] <= MAXDATE)
return
CALCULATE([BankCountAllCustomers]; datasetd)
Selected από φίλτρο Power BI
CALCULATE(
MIN(TransactionsEBanking[Ημερομηνία]);
ALLSELECTED(TransactionsEBanking[Ημερομηνία])
)
Change Date End =
Var _endDate= Maxx(ALLSELECTED('Date'[Date Filer]),ENDOFMONTH('Date'[Date Filer]))
Var _start_date= minx(ALLSELECTED('Date'[Date Filer]),'Date'[Date Filer]))
return
_endDate & " " & _start_date
Δημιουργία πίνακα on the fly για πιο εύκολο φιλτράρισμα αποτελεσμάτων.
Δημιουργία πίνακα on the fly για πιο εύκολο φιλτράρισμα αποτελεσμάτων.
AllPresence = SELECTCOLUMNS(Presence; "name";Presence[member_name];"presabs";Presence[presence])
Υπολογισμός χρόνου σε DAX
-- DATEDIFF computes the delta between two dates, using different units of measure
-- YEAFRAC returns the delta as a fraction (in years)
EVALUATE
VAR StartDate = DATE ( 2011, 01, 01 )
VAR EndDate = DATE ( 2012, 12, 15 )
RETURN
{
( "DATEDIFF Year", DATEDIFF ( StartDate, EndDate, YEAR ) ),
( "DATEDIFF Quarter", DATEDIFF ( StartDate, EndDate, QUARTER ) ),
( "DATEDIFF Month", DATEDIFF ( StartDate, EndDate, MONTH ) ),
( "DATEDIFF Day", DATEDIFF ( StartDate, EndDate, DAY ) ),
( "Subtraction", INT ( EndDate - StartDate ) ),
( "YEARFRAC", YEARFRAC ( StartDate, EndDate ) )
}
MeetingTimeMinsHours =
VAR _all = SUMX( Committees_Meetings; Committees_Meetings[time_end] - Committees_Meetings[time_start] ) * 1
VAR _days = INT( _all )
VAR _time = _all - _days
RETURN FORMAT( _time; "hh:mm")
Διόρθωση Flickering se Windows Forms με διάφανες εικόνες και background
Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or 33554432
Return cp
End Get
End Property
Private Sub PreVentFlicker()
With Me
.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
.SetStyle(ControlStyles.UserPaint, True)
.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
.UpdateStyles()
End With
End Sub
Μικρά χρήσιμα script
//Αλλάζει κείμενο σε div
$('.cart-items').text(response);
//Επιστρέφει κείμενο στο success
toastr.success('<?php echo site_phrase('added_to_the_cart'); ?>');
//Κλείνει το modal
jQuery('#large-modal').modal("toggle");
//Κάνει update συγκεκριμένο div
$('#cartinstoreright').load(location.href+" #cartinstoreright>*","");;
If statement php σε μια γραμμή
<?php echo $row['status'] == 1 ? "checked" : ""; ?>
Repair XFS Filesystem error
xfs_repair /dev/md0
fsck /dev/md1
Check the file system and the re-install the bootloader
Request the rescue-system and then a hardware-reset. Connect to the rescue system.
Possible to mount the RAID?
# mount /dev/md1 /mnt
Yes. Do a file system check (first umount the file system):
# ummount /mnt
# fsck /dev/md1;
Shows some (many) errors. Fixed them by staying on the "y" key. Could use the auto repair option of fsck (-y).
Re-Install the bootloader
This is a Hetzner installimage-setup, so there should be a grub bootloader. Check for the /boot/grub/ folder. Again mount the RAID.
# mount /dev/md1 /mnt
# ls /mnt/boot/grub
It is there, so there is a good chance, that the bootloader is grub, not lilo. Now re-install grub on the disk. Actually on both disks, just in case one is missing.
Make a chroot environment:
# mount /dev/md1 /mnt
# mount -t none -o bind /dev /mnt/dev
# mount -t proc -o bind /proc /mnt/proc
# mount -t sysfs -o bind /sys /mnt/sys
# chroot /mnt
Grub:
# grub
Look for the file stage1 to find the boot partitions
grub> find /grub/stage1
(hd0,1)
(hd1,1)
Install the bootloader on both partitions. Both are regarded as hd0 from the point of view of the bootloader at boot time.
grub> device (hd0) /dev/sda
device (hd0) /dev/sda
grub> root (hd0,1)
root (hd0,1)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0)
setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 17 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+17 p (hd0,1)...
succeeded
Done.
The same for the other disk
grub> device (hd0) /dev/sdb
grub> root (hd1,1)
grub> setup (hd0)
grub> quit
And reboot - works.
Regular expression για e-mail validation
^ Για να δηλώσουμε την αρχή του string
([a-zA-Z0-9_\-\.]) – Το πρώτο block επιτρέπει όλα τα γράμματα, όλα τα νούμερα, την κάτω παύλα, την παύλα και την τελεία.
@ – Για να κάνει validate το @
([a-zA-Z0-9_\-\.]) – Το πρώτο block επιτρέπει όλα τα γράμματα, όλα τα νούμερα, την κάτω παύλα, την παύλα και την τελεία.
([a-zA-Z) – Το πρώτο block επιτρέπει όλα τα γράμματα.
$ – Για να δηλώσουμε το τέλος του string.
^([a-zA-Z0-9_\-\.])+@+([a-zA-Z0-9_\-\.])+([a-zA-Z])$
Γίνονται validate e-mail της μορφής:
mail@domain.com
mail_d@domain.com
mail.dd@domain.com
mail@sub.domain.com
mail@domain-dot.com
και όλοι οι συνδυασμοί αυτών
Πως προσθέτουμε τα μεταφορικά στο product.tpl στο Prestashop
Controllers/font/ProductController.php
Προσθέτουμε αυτό. Όπου 172 το id του carrier. Το id αλλάζει κάθε φορά που γίνεται επεξεργασία κάποιο στοιχείο του.
//tcp
$default_carrier = new Carrier(172);
$carrier_zones = $default_carrier->getZones();
if (isset($carrier_zones) && !empty($carrier_zones)) {
$first_carrier_zone = $carrier_zones[0][1];
$delivery_price = $default_carrier->getDeliveryPriceByWeight($this->product->weight, 1);
$delivery_priceog = $default_carrier->getDeliveryPriceByWeight($this->product->depth, 1);
if ($delivery_priceog > $delivery_price) {$delivery_price = $delivery_priceog;}
}
else
{
$delivery_price = 'not found';
}
//tcp
Στο product.tpl προσθέτουμε το παρακάτω για να πάρουμε τα μεταφορικά
{$delivery_price}
Δημοσιεύθηκε στη Prestashop
Σχολιάστε
Δημιουργία συντόμευσης εικονιδίου για την Επιφάνεια Εργασίας στα Windows 10
Βάζουμε προορισμό:
%windir%\explorer.exe shell:::{3080F90D-D7AD-11D9-BD98-0000947B0257}
Εικονίδιο:
%SystemRoot%\System32\imageres.dll
Πως κρατάμε αρχείο Mysql bin για όχι περισσότερο από 3 μέρες
Τα αρχεία logs (bins) της mysql πιάνουν πολύ χώρο. Είναι σχεδόν ολόκληρο το μέγεθος της βάσης για κάθε μέρα που κρατιούνται. Καλό είναι να υπάρχει ένα όριο ημερών για να μην γίνεται waste of resources.
[mysqld]
expire_logs_days=3
Πως αλλάζω background σε κλειδωμένο υπολογιστή εταιρείας
Σε command promt πατάμαε το παρακάτω path.
%AppData%\Microsoft\Windows\Themes\
Αντικαθιστούμε τα αρχεία με την εικόνα που θέλουμε. Κάνουμε log off.
SELECT αυτά που δεν υπάρχουν σε συσχετισμένο table
Βρίσκουμε αυτά που δεν κάνουν match
SELECT DISTINCT tags_to_news.tag_id, tags.name FROM `tags_to_news` LEFT OUTER JOIN tags ON tags.id = tags_to_news.tag_id WHERE tags.name IS NULL
Εισαγωγή γραμμής με identity μέσω κώδικα.
Μια από τις κλασικές χαζομάρες της Microsoft. Για να γίνει εισαγωγή id μέσω εντολής πρέπει να είναι κλειστό το ID PROTECTION. Πρέπει πρώτα να απενεργοποιηθεί, να οριστεί η στήλη στην εισαγωγή και έπειτα να ενεργοποιηθεί ξανά.
SET IDENTITY_INSERT NewCustomers ON;
INSERT INTO NewCustomers (id, datec, NewCustomerCount, NewUserCount, CustomerCategory) VALUES ('22','2018-10-13', '6367','0','2');
SET IDENTITY_INSERT NewCustomers OFF;
Πως αντιγράφουμε μόνο το κεντρικό κελί από group σε excel
Πολλές φορές πρέπει να αντιγράψουμε μόνο τις κεφαλίδες από grouped κελιά από το excel σε άλλο φύλλο. Για να το κάνουμε αυτό πρέπει να επιλέξουμε την περιοχή που θέλουμε και μετά πατάμε το Find and Select που φαίνεται στην εικόνα.
Έπειτα επιλέγουμε Go to Special και στο παράθυρο που βγαίνει επιλέγουμε Visible cells only όπως φαίνεται και στο παρακάτω screenshot.
Δημοσιεύθηκε στη Microsoft Excel
Σχολιάστε
Πως σπάμε ένα μεγάλο αρχείο Excel με πολλές γραμμές σε πολλά αρχεία
Περνάμε στις μακροεντολές VB και την τρέχουμε.
Sub DigiSpot()
Dim wb As Workbook
Dim ThisSheet As Worksheet
Dim NumOfColumns As Integer
Dim RangeToCopy As Range
Dim WorkbookCounter As Integer
Dim RowsInFile
Dim Prefix As String
Application.ScreenUpdating = False
'Initialize data
Set ThisSheet = ThisWorkbook.ActiveSheet
NumOfColumns = ThisSheet.UsedRange.Columns.Count
WorkbookCounter = 1
RowsInFile = 100 'Κάθε πόσες γραμμές θέλουμε να σπάσει το excel
Prefix = "DigiSpot" 'Όνομα αρχείου
For p = 1 To ThisSheet.UsedRange.Rows.Count Step RowsInFile
Set wb = Workbooks.Add
Set RangeToCopy = ThisSheet.Range(ThisSheet.Cells(p, 1), ThisSheet.Cells(p + RowsInFile - 1, NumOfColumns))
RangeToCopy.Copy wb.Sheets(1).Range("A1")
wb.SaveAs ThisWorkbook.Path & "\" & Prefix & "_" & WorkbookCounter
wb.Close
WorkbookCounter = WorkbookCounter + 1
Next p
Application.ScreenUpdating = True
Set wb = Nothing
End Sub
Δημοσιεύθηκε στη Microsoft Excel
Σχολιάστε
SQL Server Σύνθετο Query από SELECT
--Πίνακας Στατιστικών σε περίοδο χρόνου με βάση τον Κωδικό Συναλλαγής. Επιστρέφει: Κωδικό Συναλλαγής, Περιγραφή Συναλλαγής, Πλήθος Συναλλαγών και Αξία Συναλλαγών
SELECT b.transactionType_code AS 'ΚΩΔΙΚΟΣ ΣΥΝΑΛΛΑΓΗΣ', b.transactionType_name AS 'ΠΕΡΙΓΡΑΦΗ ΣΥΝΑΛΛΑΓΗΣ',
CASE
WHEN T.plithos IS NULL THEN 0
ELSE T.plithos
END AS 'ΠΛΗΘΟΣ',
CASE
WHEN T.axia IS NULL THEN 0
ELSE T.axia
END AS 'ΑΞΙΑ',
CASE
WHEN T.prom IS NULL THEN 0
ELSE T.prom
END AS 'ΠΡΟΜΗΘΕΙΑ',
CASE
WHEN T.custtype IS NULL THEN '-'
ELSE T.custtype
END AS 'ΤΥΠΟΣ ΠΕΛΑΤΗ',
CASE
WHEN T.chan IS NULL THEN '-'
ELSE T.chan
END AS 'ΚΑΝΑΛΙ'
FROM TransactionTypes b LEFT JOIN
(SELECT SUM(a.counted_transactions) AS plithos,
SUM(a.total_ammount) AS axia, SUM(total_charges) AS prom, c.customerType_name AS custtype, d.channel_name AS chan, a.transactionType_id
FROM Transactions a
LEFT JOIN CustomerTypes c ON a.customerType_id = c.customerType_id
LEFT JOIN Channels d on a.channel_id = d.channel_id
WHERE a.transaction_date BETWEEN '2019-07-01' AND '2019-07-31'
AND a.customerType_id = 2 AND a.channel_id = 2
GROUP BY c.customerType_name, d.channel_name, a.transactionType_id
) AS T
ON b.transactionType_id = T.transactionType_id
Βασικές λειτουργίες του Excel
Από εκεί και πέρα
=RIGHT(R25430;LEN(R25430)-FIND("|FIRSTNAME=";R25430))
Από εκεί και πριν
=LEFT(BH25419;FIND("|";BH25419)-1)
Match σε σχέση με μια στήλη. (Εάν Βρεις το Α12 στο Φύλλο TEO από την στήλη Β έως την στήλη ΑΑ τότε φέρε μου την 26η στήλη. Βολεύει σε search forms.)
=VLOOKUP(A12;TEO!B12:AA30010;26;FALSE)
Αναζήτηση με FIND ή SEARCH
=IF(FIND("DT_OOB";M9);"SMS";"")
Πρόσθεση μόνο εάν ισχύει συνθήκη σε στήλη. (Εάν η στήλη F είναι “Retail” τότε βγάλε το SUM της D)
=SUMIF(F:F;"RETAIL";D:D)
Αφαίρεση των Enter από τα κελιά
=SUBSTITUTE(A1,CHAR(10),", ")
Δημοσιεύθηκε στη Microsoft Excel
Σχολιάστε
Εργαλείο δημιουργίας schematic για Βάση δεδομένων
Εάν δεν είστε προγραμματιστής αγνοείστε αυτό το άρθρο. Εξαιρετικό εργαλείο για την δημιουργία σχήματος βάσης δεδομένων.
- Μπορείς να δημιουργήσεις κώδικα και να βγει η απεικόνιση.
- Μπορείς να κάνεις import από Mysql ή PostGre
- Μπορείς να κάνεις export για Mysql ή PostGre
- Μπορείς να δημιουργήσεις λογαριασμό και να αποθηκεύσεις όλα σου τα schematic.
Ταξινόμηση με βάση την τελευταία ενημέρωση άρθρου
Τοποθετήστε το παρακάτω function στο functions.php του θέματός σας. Η ταξινόμηση των άρθρων θα γίνει σε όλα τα archives. Αρχική, κατηγορία, tag και search.
add_action( 'pre_get_posts', 'orderTcpUpdate' );
function orderTcpUpdate( $query )
{
$query->set('orderby','modified');
}
Άνοιγμα φόρμας μέσα σε Panel με VB.NET
Εύκολα μετατρέπεται σε C#. Δημιουργήστε ένα module ώστε να μπορείτε να χρησιμοποιήσετε σε ανεξάρτητες φόρμες. Εγώ συνήθως την εφαρμόζω σε MenuStrip μενού.
Public Sub OpenInPanel(ByVal DaNewForm As Object)
Main.PanelContent.Controls.Clear()
Dim fh As Form = TryCast(DaNewForm, Form)
fh.TopLevel = False
fh.Dock = DockStyle.Fill
Main.PanelContent.Controls.Add(fh)
Main.PanelContent.Tag = fh
fh.Show()
End Sub
Όπου Main η κεντρική σας φόρμα και όπου PanelContent το Panel που θέλετε να φορτώσετε την φόρμα. Αφού δημιουργήσετε τo function (που είναι public προφανώς και όχι private) μπορείτε να την χρησιμοποιήσετε ως εξής:
OpenInPanel(Search)
Όπου Search η φόρμα που θέλετε να φορτώστε μέσα στο Panel.