Wordpress plugin development, symlink not working - wordpress

It used to works before maybe a year ago. now i'm trying to build new plugin using symlink. but wordpress not detecting that symlinked plugin.
i tried ln -s /plugin-source/ /site/wp-content/plugins/plugin-name
i've also tried using 'sudo ln'. but it's not showing in wordpress plugin. when i copy it directly it works fine. anyone know why symlinked plugin not detected by latest wordpress? Thanks!
Update
answer below works. in my case it was osx not letting wordpress to access symlinked pluging from my desktop (not sure what's reason). so i move it to htdoc directory and it worked fine.

According to your comment, it seems to me that you have tried to add it as a relative path. You should be able to make it work using the absolute path.
sudo ln -s /Users/username/Desktop/wp_plugins/plugin-name /Applications/MAMP/htdocs/site/wp-content/plugins/plugin-name
Replace username with your username. It should be able to fix your problem.

Related

Wordpress plugin path configuration

I am working on a local environment and I am pulling down a plugin that has its own git repository that is linked to the production server (also staging server). The only problem is that the plugin folder itself is in a folder like so:
repository-folder
real-plugin-folder
And my plugins directory looks like so:
plugins
plugin1
plugin2
plugin3
repository-folder
real-plugin-folder
plugin4
Is there a way to define a new path for this one particular plugin so that it will show up in my local environment and so I can edit it while keeping the plugin git repository structure in contact so I can push up to that repository? (some sort of path definition in wp-config.php?).
I think Git submodules might be the answer? But honestly I don't have time to tinker with it: https://git-scm.com/book/en/v2/Git-Tools-Submodules.
Why don't you just start your repo in "repository-folder" ? You don't need to follow the same parent folder in git.
I hope it helps you at least a clarification here
If you are on a Linux environment, setup a symlink for the plugin:
cd plugins
mkdir real-plugin-folder
ln -s respository-folder/real-plugin-folder/plugin.php real-plugin-folder/plugin.php

how to install my theme using wp quick install script?

i am using WP Quick Install Script to install WordPress and it works fine. but it's not installing my custom theme. i also placed theme as theme.zip in WP-quick-install folder but it shows a white blank screen on front-end.
what is wrong there?
Any reason why you are using WP Quick Install in the first place?
I would simply suggest setting up the site as normal and adding your theme into the /themes/ directory.
If this is daunting, just shout, but first read the Wordpress Codex - Installing Wordpress

Testing plugins live with Varying Vagrant Vagrants

I'm currently trying to use VVV to develop and test my plugins. My host OS is Win10.
My plugins are in D:\Workshop\projects\vendor\module. I've used this folder structure for a long time, and it is really convenient, especially for use with Composer and friends.
Now I've installed VVV, created a site with VV. I want to test a plugin, the source code of which is in D:\Workshop\projects\XedinUnknown\my-project. So, I create a symlink in D:\Workshop\projects\XedinUnknown\vvv-local\www\my-test-site\htdocs\wp-content\plugins that points to that project's folder. Alas, it doesn't work. If I SSH into VVV and ls /srv/www/my-test-site/htdocs/wp-content/plugins, I can see my-project there, but it points to ../../../../../../../XedinUnknown/my-project, which, of course, doesn't exist. If instead of symlink I create a junction, it's just an empty file.
I suspect that this has to do with how the Linux environment handles Windows symlinks, but I'm not entirely sure. Is it possible to make this work somehow? I really don't wanna copy the whole project folder into VVV.
This is also addressed here.
So, it would seem like I've found somewhat of a solution. I added a synched folder, which maps to my projects home. I then create a symlink to that folder from the WP plugins directory, inside the VM.
Step 1 - Add Shared Folder
This should be done in a Customfile as explained here. This file should go into the same directory as the Vagrantfile, e.g. it will become the Vagrantfile's sibling. In my case, if you're following along from my question, it is in D:\Workshop\projects\XedinUnknown\vvv-local. Anything put here becomes global for the whole of VVV. This also gives you the ability to use different combinations of your projects in different websites. Add these contents to your Customfile, creating it if it does not exist.
config.vm.synced_folder "D:/Workshop/projects", "/srv/projects", :owner => "www-data", :mount_options => [ "dmode=775", "fmode=774" ]
Of course, you should replace D:/Workshop/projects with the path to where you store your projects. Note the forward slashes (/). This works on Win/Nix. For a Windows-only configuration, I suspect you'd have to replace them with \\, because this is an escape sequence.
Step 2 - Add Link to Project
This should be done in your site's vvv-init.sh file. In my case, this file was in D:\Workshop\projects\XedinUnknown\vvv-local\www\my-test-site\, because I want to create this symlink specifically for the my-test-site site. Please note that your VVV path will probably be different, and it doesn't have to be inside the projects directory. It's wherever you cloned VVV into. Add the below lines to your site's vvv-init.sh file.
if [ ! -f "htdocs/wp-content/plugins/my-project" ]; then
echo 'Creating symlink to plugin project...'
cd ./htdocs/wp-content/plugins
ln -s /srv/projects/XedinUnknown/my-project my-project
cd -
fi
In the above snippet, change the path to your desired project path, keeping in mind that /srv/projects/ now maps live to the projects root in your host OS. You can also replace the second occurrence (last word) of my-project in ln -s /srv/projects/XedinUnknown/my-project my-project with whatever you want. As long as you don't change it later, your plugin should not suddenly get de-activated.
Also, from what I understood, vvv-init.sh runs during provisioning, not every time the machine is brought up. So, if you want to run the code in there, you have to run vagrant up --provision from the VVV directory. If you don't want to provision, you can run it manually. SSH into VVV with vagrant ssh, then cd /srv/www/my-test-site (replace my-test-site with name of your site), and run . vvv-init.sh.
Afterword
I am quite new to Bash scripting, and I don't know if my solution is the best one, so please feel free to suggest better versions of the Bash script. I also don't know Ruby, and am new to Vagrant, so please feel free to suggest improvements to the Customfile - this is in essence the same as the Vagrantfile.
One possible issue that I can anticipate with this solution (and this is inherently by design of the filesystem architecture) is that if WordPress decides to make changes to your plugin, e.g. if you run a WP update, it will effectively delete all files in your project, including the repository. So, on the testing site I would recommend using something like this. I am in no way associated with this plugin.

How to upload WordPress child theme to XAMPP + Bitnami + Mac OS?

Everything was going so well: installed XAMPP on Mac (OS 10.10.2). Installed Bitnami WordPress module. Imported existing WordPress site (this site is already live). Then imported/installed the theme I want to modify. All good up to that point.
Now I want to create a child theme. Following the instructions from Themify, which are great. BUT: I can't open the htdocs directory within the wordpress dir that was installed by the Bitnami module. No permissions.
There's a help page, but it's not helping me. Reason 1: I open FileZilla, I FTP to localhost, but the wordpress dir is nowhere to be found there. Reason 2: I try to follow their sudo chown instructions but the path is not valid for me. I tried:
$ sudo chown daemon:daemon Applications/XAMPP/xamppfiles/apps/wordpress/htdocs
... but no luck. "No such file or directory." I can find this folder in the Finder (see screencap), but I can't seem to access it from the command line. (Is that because XAMPP is in the Applications directory?)
In case it's not obvious, I am doing all this to muck around with my child theme offline. But I can't get my child theme folder into the wp-content/themes folder, because I can't FTP or access the folder directly through the Finder.
I was able to change permissions through the Mac "Get Info" panel. Doh!!
"Get Info" panel, unlocked
See screencap.
Try and put a Leading slash at the front of the directory listing so run this instead:
sudo chown daemon:daemon /Applications/XAMPP/xamppfiles/apps/wordpress/htdocs
Just go to /Applications/XAMPP/xamppfiles/htdocs/mysite/wp-content/themes/your-child theme and set permission of your child theme folder to writable to everyone.

BitBucket doesn't import "wp" folder from WordPress-Skeleton

Im trying for the first time to use Bitbucket togheter with SourceTree when building a WordPress site. Where working in a group of six people so I would really like to use the power of these services.
Right now im following this guide when trying to accomplish this:
https://www.youtube.com/watch?v=gx_XfziaHvo
I've also looked at several other guides and all of them say that i should base my WordPress site on markjaquith's WordPress-Skeleton base.
https://github.com/markjaquith/WordPress-Skeleton
The problem I've encountered is that when i start my Respository on BitBucket it does not import the folder "wp". Everything else is included but the folder "wp". Therefore I can't install WordPress. It's missing a massive amount of vital files.
After searching the internet and stackoverflow i can't seem to find a solution or any one else with the same problem! What am I doing wrong?
I've also tried importing the WordPress-Skeleton git directly in SourceTree but no luck there either.
... you'll have to add the wp folder to track it.
Use this: git add --all
$ git add --all
Next, use: git status (and you should see the wp folder and all new changes are added and being tracked)
$ git status
This is a silly question, but did you check your .gitignore file?

Resources