Unlock ChatGPT Plus with non-US bank cards

If you want to get ChatGPT Plus and get such errors like “Your card was declined. Please try a different card” or “try debit card” – then you might try this way below.

I am sure it is a temporary problem and OpenAI will solve the issue in the future.

But for now, to get chatgpt 4 the only way is getting PLUS plan, so the method can be useful for you.

As you noticed the payment is provided by Stripe + Link.co.

Continue reading “Unlock ChatGPT Plus with non-US bank cards”

Allow SFTP root access to the Linux Server – just for your own IP address

If you want to access your Linux server using SFTP and a root user, by default it can be disabled. Due to security reasons most server-providers disable that by default.

So, you can enable it yourself. But as it is not secure, you need to add some restrictions.

Such as, adding this feature only for your own static IP.

So let’s do that. Open your server’s sshd_config file by using this command.

nano /etc/ssh/sshd_config

Under the line Subsystem sftp /usr/lib/openssh/sftp-server you can paste 3 new lines.

Here is how it should look like:

Subsystem sftp  /usr/lib/openssh/sftp-server
Match Address 111.111.111.111
PasswordAuthentication yes
PermitRootLogin yes

Replace 11.111.111.111 with your own static IP address.

Then save and restart SSH by using

service ssh restart

That’s all. Now you can access to your server via SFTP, as a root user if you are connected to internet with your own static IP.

All other users will not be able to connect of course.

Set Incremental SKU-s to your WooCommerce products

When you have products with no SKU and you would like to set Incremental SKU numbers for them directly in the website – then this snippet will help you.

<?php
if(isset($_GET["set_sku"]))
add_action('wp',function(){
$base_sku = 100;
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => '_sku',
'compare' => 'NOT EXISTS'
)
)
);
$query = new WP_Query($args);
while ($query->have_posts()) {
$query->the_post();
$product_id = get_the_ID();
$sku = $base_sku++;
update_post_meta($product_id, '_sku', "SK_".$sku);
}
wp_reset_query();
die("DONE. You can remove this code from your website!");
});

That’s it. Now just run yourwebsitecom/?set_sku=1 once and done!

The code will create SK_100, SK_101, … SKU-s for your website.

If you want to create SKU-s for variation as well, we can improve our code and get this snippet below:

Continue reading “Set Incremental SKU-s to your WooCommerce products”

Rename existing WordPress Attachments files, titles

Rename wp media object

If you change your website name, or you have to change some strings in existing imagedata of your website, we need to do the following steps:

Step 1: Fetch all attachments

Step 2: Rename all corresponding uploaded files

Step 3: update attachment data so that new files would be recognized by WP

Step 4: Update title, description data as well.

Here is a snippet which implements all 4 steps above.

Continue reading “Rename existing WordPress Attachments files, titles”

How quickly get started with Open-AI DALL-E using PHP

Official documentation of Open AI gives 3 type of examples – NodeJS SDK, Python SDK and raw CURL.

I know there are several 3rd party PHP SDK-s in Github. But i also know most of excited testers would like to get started directly, without installing SDK and reading docs.

So, let’s implement raw CURL directly into PHP code and make DALL-E working in 1 minute.

You must get your API token here: https://beta.openai.com/account/api-keys

Once you have a key, just use this PHP snippet for DALL-E image generation:

Continue reading “How quickly get started with Open-AI DALL-E using PHP”

How to use Google DNS in Ubuntu/Debian permanently

Few weeks ago in one of the servers we faces strange issue: The website couldn’t send emails using remote SMTP.

First i thought it was related to SMTP port, credentials etc. – but everything was OK there. So then i tries to ping google.com and got surprised. It wasn’t worked. Simple ping didn’t work.

So it was obviously corrupted DNS issue.

First i tried the easier way, which is recommended by developers.google.com, adding Google DNS IP addresses to resolv.conf file

sudo vi /etc/resolv.conf

But it didn’t help.

So i decided to go into deeper and solving it using netplan.

Continue reading “How to use Google DNS in Ubuntu/Debian permanently”

How to create downloadable PDF link that works in all mobile browsers – Chrome, Safari etc.

In some mobile browsers PDF links might not work properly.
Instead of downloading, its tab just disappears immediately after opening. And we get no downloaded PDF.

Auto-close, auto-disappear – whatever you call that – but the problem exists.

So for WordPress websites, here is how to skip this pdf-download block for mobile browsers.

We will use pseudo-page link in order to bypass that block.

I mean, instead of direct links to PDF, we will use pseudo-pdf link which doesn’t look like PDF, but actually returns PDF header and body.

Let’s say that we have a PDF ile in “wp-content/uploads/2022.pdf”.

Continue reading “How to create downloadable PDF link that works in all mobile browsers – Chrome, Safari etc.”

Creating dynamic partial content in Cached WordPress Pages using Rest API

Assume that we are using Fully cached static pages by any cache plugin. But we need to server some fresh content inside some block of the page.

To understand it easier let’s consider that we have fully cached homepage where there is a block about the number of your customers.

Something like this

Continue reading “Creating dynamic partial content in Cached WordPress Pages using Rest API”