1

Я добавляю Advanced Custom Fields Pro (v5) к простому плагину, который я создаю.Дополнительные пользовательские поля: dirname (__FILE__), возвращающий неверный URL-адрес на общем сервере для CSS и JS, включает

Я использую учебное пособие на веб-сайте ACF: Distributing ACF in a plugin/theme. Учебное пособие требует использования get_stylesheet_directory(), но это для темы. Я заменил его на dirname(__FILE__).

На этапе 3 include_once работает нормально с dirname(__FILE__). Шаги 1 и 2 также работают для включения файлов, но я столкнулся с проблемой, когда файлы Javascript и CSS включены в ACF. Она возвращает URL, как следующие:

http://example.com/templates/wp-starter/nfs/c05/h03/mnt/70376/domains/example.com/html/templates/wp-starter/wp-content/plugins/simple/acf/css/global.css?ver=5.0.0 

Это то, что я хотел бы получить:

http://example.com/templates/wp-starter/wp-content/plugins/simple/acf/css/global.css?ver=5.0.0. 

Я использую сервер сетки медиа Храма (общий хостинг).

Вот соответствующий код из plugins/simple/simple.php:

// 1. Customize ACF path 
add_filter('acf/settings/path', 'my_acf_settings_path'); 

function my_acf_settings_path($path) { 
    // update path 
    $path = dirname(__FILE__) . '/acf/'; 

    // return 
    return $path; 
} 

// 2. Customize ACF dir 
add_filter('acf/settings/dir', 'my_acf_settings_dir'); 

function my_acf_settings_dir($dir) { 
    // update path 
    $dir = dirname(__FILE__) . '/acf/'; 

    // return 
    return $dir; 
} 

// 3. Include ACF 
include_once(dirname(__FILE__) . '/acf/acf.php'); 

Как я могу получить правильный URL для скриптов и таблиц стилей?

Я попытался с помощью следующих в config.php, но это не сработало:

define('WP_CONTENT_DIR', 'http://example.com/templates/wp-starter/wp-content'); 
define('WP_PLUGIN_DIR', 'http://example.com/templates/wp-starter/wp-content/plugins'); 

enqueue я мог эти сценарии и таблицы стилей по отдельности, но было бы неплохо, если бы я не должен делать что.

+0

возможно дубликат [$ \ _ SERVER \ [ 'ДОКУМЕНТ \ _root' \] возвращает путь с повторным именем каталога] (http://stackoverflow.com/questions/24123839/serverdocument-root-returns- path-with-repeat-directory-name) ... Возможно, связанный, DOCUMENT_ROOT может быть перекошен неправильно настроенным apache – AeroX

ответ

1

Я решил проблему, используя $dir = plugins_url() . '/simple/acf/'; на шаге 2. Я сохранил все остальное же.

// 2. Customize ACF dir 
add_filter('acf/settings/dir', 'my_acf_settings_dir'); 

function my_acf_settings_dir($dir) { 
    // update path 
    $dir = plugins_url() . '/simple/acf/'; 

    // return 
    return $dir; 
} 
+1

Это также решило обратную проблему, которая у меня была, где эти файлы связывали полные пути машины, а не пути к веб-сайту, t в локальной среде, но работала над производственными и промежуточными ящиками. Благодаря! –

+0

http://support.advancedcustomfields.com/forums/topic/acf-admin-cssjs-not-loading/ Это похожее решение, на самом деле я решил сделать свое решение таким же. Поскольку эта проблема была тем, с чем я столкнулся, но я использовал 'plugins_url()' вместо 'get_bloginfo ('url')' Спасибо снова –

0

Принятый ответ не работает для слинкован каталогов (например, те, развертывание с помощью Capistrano), который этот ответ был сформулирован близко (вот почему это продолжает придумывать, когда прибегая к помощи).

Исправление, которое будет работать для символических ссылок, можно найти here.

Я просто хотел отправить рабочее решение, основанное на @elliotcondon ранее предложение # 124 (комментарий)

Место это в ваш файл functions.php темы.

add_action('init', "initHook", 0); // We use the 0 to bypass priority 

function initHook() { 
    if(function_exists('acf')) { 
     acf()->settings["dir"] = WP_CONTENT_URL."/plugins/advanced-custom-fields/"; 
    }  } 

 Смежные вопросы

  • Нет связанных вопросов^_^