i am new on wordpress and i am trying to merge a website with wordpress as a theme which contains its own php files and folders " forms, includes, ajax and others .. "
i am using this to define and call a path on my files
defined('SITE_ROOT') ? null : define('SITE_ROOT', DS . 'home' .DS . 'sitename' . DS . 'public_html');
when i tried to do this in wordpress , it doesnt work , so i typed the full path like this
defined('SITE_ROOT') ? null : define('SITE_ROOT', DS . 'home' .DS . 'sitename' . DS . 'public_html' . DS . 'wordpress' . DS . 'wp-content' . DS . 'themes' . DS . 'citation');
it works locally! .. i tried to upload it online and i changed the path to
defined('SITE_ROOT') ? null : define('SITE_ROOT', 'c:' .DS . 'wamp' . DS . 'www' . DS . 'wordpress' . DS . 'wp-content' . DS . 'themes' . DS . 'citation');
but it doesnt work.
after searching i found an absolute path for wordpress folder , then i tried it locally and it works!
defined('SITE_ROOT') ? null : define('SITE_ROOT', ABSPATH . DS . 'wp-content' . DS . 'themes' . DS . 'citation');
i tried it online but it doesnt work again ..
any one can help ?
You may use this syntax:
defined("SITE_ROOT") || define("SITE_ROOT", "provide url here");
But this is not the solution, just a nice shortcut for defining a constant, anyways, you don't need to do this, WorrdPress has TEMPLATEPATH, instead and also WordPress provided so any helper functions for this kind of things and one of those:
// Prints http://www.example.com/home/wp/wp-content/themes/yourThrme
echo get_bloginfo('template_url');
Or use
// prints http://www.example.com/home/wp/wp-content/themes/yourThrme
bloginfo('template_url');
Also, worth checking these available functions. Check WordPress Integration with other Website.
Related
i get this error from my index page that is the only view page in the Model View Controller(MVC)
project i have and with the code below in my index page
<?php
define("ROOT", dirname(__DIR__) . DIRECTORY_SEPARATOR);
define("APP",ROOT . "app" . DIRECTORY_SEPARATOR);
define("VIEW", ROOT . "app". DIRECTORY_SEPARATOR . "view" . DIRECTORY_SEPARATOR);
define("MODEL",ROOT . "app" . DIRECTORY_SEPARATOR . "model" . DIRECTORY_SEPARATOR);
define("DATA", ROOT . "app" . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR);
define("CORE" , ROOT . "app" . DIRECTORY_SEPARATOR . "core" . DIRECTORY_SEPARATOR);
define("CONTROLLER", ROOT . "app" .DIRECTORY_SEPARATOR . "controller" . DIRECTORY_SEPARATOR);
$modules = [ROOT,APP,CORE,CONTROLLER,DATA];
$path = set_include_path(get_include_path() . PATH_SEPARATOR .implode(PATH_SEPARATOR,$modules));
spl_autoload_register("spl_autoload", false);
As this comment on the PHP manual says:
Since PHP 8.0 spl_autoload_register() will always throw a TypeError on invalid arguments, therefore the second argument throw is ignored and a notice will be emitted if it is set to False.
So on PHP 8 you should no longer pass false as the 2nd argument.
If you only want to use the default spl_autoload() implementation, I would suggest passing null as the first argument as per PHP documentation:
https://www.php.net/manual/en/function.spl-autoload-register.php#refsect1-function.spl-autoload-register-parameters
just replace
spl_autoload_register("spl_autoload", false);
with
spl_autoload_register("spl_autoload");
Link to documentation
I just want to know if I can create Product block in local code pool (i.e. \app\code\local\Mage\Catalog\Block\Product.php) without making my custom module just place this single file?
If so, will this local code pool block call or the core one call? If it would be the local one, please let me know why.
If you copy a code/core file to the code/local repository, the core file will be overwritten by the local file.
This is because of the include path order to load system files specified in app/Mage.php:
$paths = array();
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'local';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'community';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'core';
$paths[] = BP . DS . 'lib';
So in your case the system will search for the Product.php in following order:
app/code/local/Mage/Catalog/Block/Product.php
app/code/community/Mage/Catalog/Block/Product.php
app/code/core/Mage/Catalog/Block/Product.php
lib/Mage/Catalog/Block/Product.php
If the system cannot find any of these files, it will throw an error.
I'm encountering a javascript error in a TinyMCE dialogue box when I try to insert a file into content. here's what I get: Uncaught typeError: Cannot read property 'length' of undefined ####.com/editor/jscripts/tiny_mce/plugins/Archiv/php/fileLoader.php?file=javascript 165
Initially I assumed the path was broken so I went over my links and realized everything was fine. I assumed it might have been a browser compatibility issue but tests on Safari, Firefox and even, sadly, IExplorer proved this wasn't the case. I then assumed the fault could have been with my version of TinyMCE and patched it with new files to no success. I'm at wits end! Please help, anyone.
This is the fileLoader.php:
<?php
switch($_GET['file']){
# Javascript files
case 'javascript':
header('Content-type: text/javascript');
readfile('..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'tiny_mce_popup.js')."\r\n\r\n";
readfile('..' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'flash_detect_min.js')."\r\n\r\n";
readfile('..' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'jquery' . DIRECTORY_SEPARATOR . 'jquery-1.3.2.min.js')."\r\n\r\n";
readfile('..' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'jquery' . DIRECTORY_SEPARATOR . 'jquery-ui-1.7.2.custom.min.js')."\r\n\r\n";
readfile('..' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'SWFupload' . DIRECTORY_SEPARATOR . 'swfupload.min.js')."\r\n\r\n";
readfile('..' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'json2.min.js')."\r\n\r\n";
readfile('..' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'SWFupload' . DIRECTORY_SEPARATOR . 'handlers.min.js')."\r\n\r\n";
readfile('..' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'archiv.min.js');
break;
# default 404
default:
header("HTTP/1.0 404 Not Found");
break;
}
?>
It sounds like the PHP is functioning as intended. The error you're mentioning is a Javascript error, as PHP does not use .length you won't see the error get length of undefined come from PHP.
Try including all of your JS files manually and see where the error is. It's likely one of the libraries is expecting an element to be on the page that isn't. If they're minified I would recommend using Source Maps.
I'm trying to install TheStudio application which was apparently written using Zend Framework. My test server is running Ubuntu 12.04 and my application directory is stored in /home
My error log is stating
PHP Fatal error: require_once(): Failed opening required 'usr/share/php/libzend-frameworkphp/Zend/Loader/Autoloader.php'
(include_path='.:../library:../application/db:../application/models:../application/utils:../application/views/helpers:../application') in /home/application/config/config.php on line 22
Line 22 of config.php states:
require_once '/usr/share/php/libzend-framework-php/Zend/Loader/Autoloader.php';
The include path is as follows:
define('PS', PATH_SEPARATOR);
define('DS', DIRECTORY_SEPARATOR);
define('ROOT_DIR', dirname('home'));
// Modify include path
$paths = '.' . PS . '..' . DS . 'library'
. PS . '..' . DS . 'application' . DS . 'db'
. PS . '..' . DS . 'application' . DS . 'models'
. PS . '..' . DS . 'application' . DS . 'utils'
. PS . '..' . DS . 'application' . DS . 'views' . DS . 'helpers'
. PS . '..' . DS . 'application';
ini_set("include_path", $paths);
How should I modify the path statement to target the files located in /home directory? Are there other adjustments that should be made in order to resolve the above error?
/usr/share/php/libzend-frameworkphp is the default installation path for the Zend Framework Ubuntu package, so it seems this application is assuming that will be there. sudo apt-get install zend-framework should solve that problem.
I would say it's bad practice to include the full path on a require_once call, and there are way too many include paths being defined on your third code example (which I assume is from the app?).
I'm just trying to build my first app on PHP Fog but there's a piece of code that doesn't run properly - works fine on localhost and other regular hosts though.
I use a modified version of TinyMVC, this is the code responsible for setting up autoloading:
/* Set include_path for spl_autoload */
set_include_path(get_include_path()
. PATH_SEPARATOR . FRAMEWORK_BASEDIR . 'core' . DS
. PATH_SEPARATOR . FRAMEWORK_BASEDIR . 'libraries' . DS
. PATH_SEPARATOR . FRAMEWORK_APPLICATION . DS . 'controllers' . DS
. PATH_SEPARATOR . FRAMEWORK_APPLICATION . DS . 'models' . DS
);
/* File extensions to include */
spl_autoload_extensions('.php,.inc');
/* Setup __autoload */
$spl_funcs = spl_autoload_functions();
if($spl_funcs === false)
spl_autoload_register();
elseif(!in_array('spl_autoload',$spl_funcs))
spl_autoload_register('spl_autoload');
Basically, it fails at the first class it should load, which is located in "FRAMEWORK_BASEDIR . 'core' . DS". The class filename is "framework_controller.php" and class name is "Framework_Controller" (tried lowercase as well). If I include the class manually it works but fails with autoload.
Here's the error message that I get:
Fatal error: spl_autoload(): Class Framework_Controller could not be loaded in /var/fog/apps/app7396/claudiu.phpfogapp.com/application/controllers/home.php on line 12
Any ideas as to what could the problem be?
I managed to sort it out:
function framework_autoload($className, $extList='.inc,.php') {
$autoload_paths = array (
FRAMEWORK_BASEDIR . 'core' . DS,
FRAMEWORK_BASEDIR . 'libraries' . DS,
FRAMEWORK_APPLICATION . DS . 'controllers' . DS,
FRAMEWORK_APPLICATION . DS . 'models' . DS
);
$ext = explode(',',$extList);
foreach($ext as $x) {
foreach ($autoload_paths as $v) {
$fname = $v . strtolower($className).$x;
if(#file_exists($fname)) {
require_once($fname);
return true;
}
}
}
return false;
}
spl_autoload_register('framework_autoload');
Thanks to another question here on StackOverflow: spl_autoload problem