Я спросил Как сделать так, чтобы кнопка «Просмотр записи» сохранялась и просматривалась в одном и том же окне? на Wordpress Stack Exchange, но этот вопрос может быть лучше для переполнения стека, так как он более прямойсвязанные с кодированием.
В Wordpress есть поле, позволяющее сохранять, просматривать и публиковать записи в блоге:
Picture.png http://img854.imageshack.us/img854/7986/picturek.png
«Предварительный просмотр»Кнопка на самом деле является ссылкой, стилизованной под кнопку:
<a tabindex="4" id="post-preview" target="wp-preview"
href="/?p=67&preview=true" class="preview button">Preview</a>
Моя проблема в том, что я не могу понять, как открыть эту ссылку в текущем окне.Обратите внимание на target="wp-preview"
часть.Я пытаюсь избавиться от этой части, но я думаю, что может быть другая функция, связанная с этим элементом, потому что я действительно не могу открыть ее в текущей вкладке / окне, даже после ее отмены и удаления атрибута target
.
Я запускаю следующий код как часть плагина (вы можете увидеть больше информации о том, как запустить его как плагин ниже), но также возможно скопировать и вставить его в Chrome или Firefoxконсоль, чтобы проверить это самостоятельно, даже не модифицируя Wordpress.Обратите внимание, что при тестировании вам нужно будет использовать jQuery
вместо $
в ваших собственных функциях, так как Wordpress использует метод noconflict
, однако приведенный ниже код работает нормально, как есть.
//select the node and cache the selection into a variable
var $node = jQuery('a.preview');
//add a 1px dotted outline to show we have the right element
$node.css('outline','1px dotted red');
//show current target
console.log($node.prop('target'));
//show if anything is bound - nothing is for me ('undefined')
console.log($node.data('events'));
//remove anything bound to it
$node.unbind();
//set target to _self (current window), just in case
$node.prop('target','_self');
//the remove the target attribute all together
$node.removeAttr('target');
//clone the node
var $clone = $node.clone();
//change the text to new
$clone.text('new');
//remove target from clone
$clone.removeAttr('target');
//unbind the clone
$clone.unbind();
//insert the clone after the original node
$node.after($clone);
//show current target - now shows undefined for me
console.log($node.prop('target'));
//show if anything is bound - still 'undefined'
console.log($node.data('events'));
Вот как бы вы работали с кодом в теме или плагине:
// set up an action to set a function to run in the wp admin_footer
add_action('admin_footer','my_admin_footer_script',9999);
Вот функция, которая добавляет javascript:
//this function can then be used to add javascript code to the footer
function my_admin_footer_script(){ ?>
<script type="text/javascript">
jQuery(function($){
(above js code here)
});
</script>
<?php
}
Это результат, который я получаю в итоге,Если я нажму ссылку «тест», она откроется в том же окне.Если я нажму на ссылку «Просмотр», она все равно откроется на новой вкладке.
Picture.png http://img832.imageshack.us/img832/4163/picturesf.png
ps: я использую метод из Вещи, о которых вы, возможно, не знаетеjQuery для проверки связанных событий, и я не нашел ничего связанного, и я считаю, что Wordpress в основном использует jQuery, поэтому я не думаю, что это будет связано с другим обработчиком событий.