Le problème:
Je suis actuellement en train de terminer un thème premium que j'ai développé et tout va bien pour la plupart. Pour les pages, j'ai quelques méta-boîtes personnalisées pour l'ajout de diaporamas et d'autres éléments supplémentaires du contenu de la page et j'ai constaté que l'écran d'édition est maintenant assez long.
En raison de la grande hauteur verticale, vous modifiez quelque chose en bas, puis vous devez revenir au début de la liste pour cliquer sur "publier" ou "mettre à jour". Cela devient fatiguant après l'édition de 2 pages.
(voir l'image ci-dessous pour voir le problème de première main, cliquez pour agrandir)
La question:
Existe-t-il un moyen de faire en sorte que la méta-boîte de publication/mise à jour suive la page de sorte que les boutons "Publier" et "Mettre à jour" soient toujours accessibles et visibles sans avoir à faire défiler tout le chemin jusqu'au sommet?
Solution basée dans ce StackOverflow Q & R .
Bien, plus une preuve de concept qu'autre chose ... Le style et les scripts sont imprimés paresseux.
Ajoutez un div Scroll to top
fixe lié à une ancre près du bouton Publish
.
add_action( 'admin_head-post.php', 'scroll_to_top' );
function scroll_to_top()
{
?>
<style>#box {
/* Position absolutely, 30px down from the top */
position: absolute;
top: 30px;
/* In my case I'm centering it in the window; do what you like */
margin-left: -100px;
left: 50%;
width: 200px;
/* These are just for my example */
height: 1.25em;
border: 1px solid #bbb;
text-align: center;
}
</style>
<script type="text/javascript">
jQuery(window).load( function() {
jQuery('<div id="box"><a href="#top">Scroll to top</a></div>').appendTo("#wpbody-content");
jQuery('<a name="top" id="top"></a>').appendTo("#visibility");
function getScrollTop() {
if (typeof window.pageYOffset !== 'undefined' ) {
// Most browsers
return window.pageYOffset;
}
var d = document.documentElement;
if (d.clientHeight) {
// IE in standards mode
return d.scrollTop;
}
// IE in quirks mode
return document.body.scrollTop;
}
window.onscroll = function() {
var box = document.getElementById('box'),
scroll = getScrollTop();
if (scroll <= 28) {
box.style.top = "30px";
}
else {
box.style.top = (scroll + 2) + "px";
}
};
});
</script>
<?php
}
Vous pouvez probablement le faire avec certains CSS. Voici un travail rapide de piratage via l'inspecteur webkit:
#side-sortables {
margin-top: 230px;
}
#submitdiv {
position: fixed;
z-index: 99;
margin-top: -230px;
}
Cela ne gère toutefois pas le cas où l'interface utilisateur est en mode colonne unique.
J'ai trouvé une solution plus simple
Ajoutez ceci à votre functions.php
// Update CSS within in Admin
function admin_style() {
wp_enqueue_style('admin-styles', get_template_directory_uri().'/admin.css');
}
add_action('admin_enqueue_scripts', 'admin_style');
et pointez-le vers un fichier CSS dans votre dossier de thème avec cette
@media (min-width: 850px) {
.post-php #postbox-container-1 {
position: fixed;
top: 100px;
z-index: 999999;
right: 320px;
}
}