У меня есть плагин WordPress, который позволяет мне отправлять людей на новый URL. вместо того, чтобы перейти по этому URL на той же странице и заставить пользователей покинуть мой сайт. Я хочу, чтобы новое окно открывалось, когда они переходят на URL
Как я могу отредактировать этот код, чтобы открылось новое окно?
<?php
/**
Plugin Name: [WPJB] Application URL
Version: 1.1
Author: Greg Winiarski
Description: Allows to set application URL on per job basis.
*/
// Plugin activation
register_activation_hook( __FILE__, 'wpjb_aurl_register');
function wpjb_aurl_register() {
// registers new custom field in wp_wpjb_meta table
wpjb_meta_register("job", "application_url");
}
// Plugin deactivation
register_deactivation_hook( __FILE__, 'wpjb_aurl_unregister');
function wpjb_aurl_unregister() {
// do nothing ...
}
// Adding custom fields to the form
add_filter("wpjb_form_init_job", "wpjb_aurl_init_job");
add_filter("wpja_form_init_job", "wpjb_aurl_init_job");
function wpjb_aurl_init_job($form) {
// adding new fields to the form
$e = $form->create("application_url", "text");
$e->setBuiltin(false);
$e->setLabel("Application URL");
$e->addFilter(new Daq_Filter_WP_Url);
$e->addValidator(new Daq_Validate_Url);
$e->setValue($form->getObject()->meta->application_url->value());
$form->addElement($e, "company");
return $form;
}
add_action("wpjb_front_pre_render", "wpjb_aurl_pre_render", 10, 2);
function wpjb_aurl_pre_render($app, $file) {
global $post_type;
try {
$c1 = is_wpjb() && wpjb_is_routed_to("index.single");
} catch(Exception $e) {
$c1 = false;
}
$c2 = $post_type == "job";
if(!$c1 && !$c2) {
return;
}
$job = $app->controller->view->job;
if(!$job->meta->application_url->value()) {
return;
}
$app->controller->view->application_url = $job->meta->application_url- >value();
}
?>
Вы не можете сделать это чисто с PHP
, но вы можете вместо перенаправления на новый url echo javascript, который будет запущен при загрузке страницы, которая откроет URL в новом окне или вкладке.
Используя что-то вроде
Echo "<script> var win = window.open(".$job->meta->application_url->value().", '_blank'); win.focus();</script>";
В вашем PHP-скрипте, вероятно, на той позиции, которая у вас сейчас есть
$app->controller->view->application_url = $job->meta->application_url->value();
Других решений пока нет …