Cum să modifici ordinea câmpurilor personalizate din formular
Am adăugat un câmp "Titlu Personalizat" în editorul de Categorii pentru a capta un titlu optimizat pentru SEO care poate fi folosit separat de numele categoriei. Funcționează perfect, dar apare ca ultimul element de input pe ecranul categoriei. În mod ideal, aș dori să fie plasat sub câmpul "Nume" (sau cel puțin în partea de sus). Este posibil acest lucru?
Iată codul pe care îl folosesc pentru a adăuga câmpul personalizat în ecranul de editare a categoriei...
if($pagenow == "edit-tags.php" && $_REQUEST['action'] == "edit")
add_filter('edit_category_form', 'my_category_fields');
function my_category_fields($tag) {
$tag_extra_fields = get_option(MY_CATEGORY_FIELDS);?>
<table class="form-table">
<tr class="form-field">
<th scope="row" valign="top"><label for="categoryTitle">Titlu complet al categoriei</label></th>
<td><input name="categoryTitle" id="categoryTitle" type="text" size="40" aria-required="false" value="<?php echo $tag_extra_fields[$tag->term_id]['cat_title']; ?>" />
<p class="description">Titlul este optional dar va fi folosit în locul numelui pe pagina de destinație a categoriei.</p></td>
</tr>
</table>
<?php
}

WordPress nu oferă hook-urile pe care le doriți, dar dacă sunteți dispus să utilizați bufferizarea ieșirii PHP și funcția preg_replace()
, puteți face să funcționeze fără a modifica nucleul. Iată un răspuns care discută despre tehnica generală necesară:
Hook-urile pe care veți dori să le utilizați sunt 'category_pre_add_form'
pentru ob_start()
și 'category_add_form'
pentru ob_get_clean()
.

Aceasta este o opțiune interesantă, Mike. De asemenea, ar trebui să elimine problema de pâlpâire inerentă opțiunii javascript. Mulțumesc ca întotdeauna!

@Scott B - Da, prefer întotdeauna să fac în PHP ori de câte ori este posibil. Îmi place să folosesc jQuery pentru interactivitate, nu pentru a compensa generarea HTML-ului care nu este ideală, deoarece, după cum menționezi, este mult mai curat.

Nu există o soluție bazată pe PHP fără a modifica nucleul. Deschide fișierul wp-admin/edt-tag-form.php
și vei vedea. Hook-ul pe care îl folosești este declanșat chiar înainte de butonul de trimitere, iar restul formularului este hard-codat.
Dar probabil poți face asta cu jQuery. Citește răspunsul meu la această întrebare similară pentru un exemplu. Exemplul este pentru ecranul de editare al postării, dar conceptul ar trebui să fie același - folosește metoda insertBefore()
din jQuery pentru a muta un element (după ID) înaintea altui element (după ID).

Îmi place ideea ta cu elementele jQuery. Dar se pare că sunt blocat, deoarece câmpurile de editare a categoriilor (elementele TR) nu au ID-uri atribuite pe care să le pot interoga cu jQuery.
