Я сделал шаблон для своего типа сообщения, это прекрасно работает. Однако я хочу подобное дублирование с некоторыми частями оригинала.
У меня есть вызов ajax с помощью jQuery $.get
Я хочу настроить таргетинг на шаблон второго типа поста, чтобы натянуть HTML только на мою текущую страницу.
На данный момент вызов ajax загружает всю страницу, включая скрипты. Modernizr загружается так же, как и весь контент.
Я попытался использовать запрос var, например, так:
// http://scratch99.com/wordpress/development/how-to-change-post-template-via-url-parameter/
function sjc_add_query_vars($vars) {
return array('template') + $vars;
}
add_filter('query_vars', 'sjc_add_query_vars');
function sjc_template($template) {
global $wp;
if ($wp->query_vars['template'] === 'test') {
return dirname( __FILE__ ) . '/single-test.php';
}
else {
return $template;
}
}
add_filter('single_template', 'sjc_template');
Код работает хорошо, но я получаю эту ошибку
Notice: Undefined index: template in /wp-content/themes/custom--theme/functions.php on line 262
262 is: f ($wp->query_vars):
Когда сингл проекта загружается нормально, я считаю, что это проблема, когда код попадает в оператор else.
Любая помощь будет отличной.
Вы получили эту ошибку, потому что ваш $wp->query_vars
не существует, или, если он существует, (чем это на самом деле массив) template
Ключ не существует. Что я сделал, чтобы проверить, это все $wp->query_vars['template']
вещь существует с PHP isset()
функция:
From PHP documentation:
isset — Determine if a variable is set and is not NULL
Прочитайте мои комментарии. Это лучшее объяснение от меня.
function sjc_template($template) {
//Now we have a $template variable with a value.
//Get the $wp as a global variable
global $wp;
//This condition is check, is there an existing key in $wp->query_vars
//called template. If $wp->query_vars or $wp->query_vars['template'] not
//extists (the second can not exists if the first is not exists),
//then it will not check, what is the value is, instead of that just jump
//to the second case to return $template;
if (isset($wp->query_vars['template']) && $wp->query_vars['template'] === 'test') {
//So at here, we have this: $wp->query_vars['template'] and the value of it is test
return dirname(__FILE__) . '/single-test.php';
} else {
//In all other cases we return with the given parameter of function
return $template;
}
}
Других решений пока нет …