Adăugare checkbox în ecranul de postare pentru a adăuga o clasă la titlu
Am nevoie ca unele postări să aibă titluri de diferite culori față de altele și am considerat că cel mai convenabil ar fi să adaug un checkbox în ecranul de creare/editare a postărilor. Cum aș putea adăuga acest checkbox și apoi să preiau valoarea acestuia în template?
Mulțumesc

Da, exact, ai nevoie de o Cutie Meta Personalizată care va crea casetele de bifare în ecranul de Editare Postare.
În acest caz, sunt butoane radio, deoarece avem nevoie de o singură valoare.
Mai jos este codul care o creează. Pune-l în fișierul functions.php
al temei tale sau creează un plugin simplu pentru a fi independent de temă.
/* Definește cutia personalizată */
add_action( 'add_meta_boxes', 'wpse_61041_add_custom_box' );
/* Fă ceva cu datele introduse */
add_action( 'save_post', 'wpse_61041_save_postdata' );
/* Adaugă o cutie în coloana principală pe ecranele de editare Post și Pagină */
function wpse_61041_add_custom_box() {
add_meta_box(
'wpse_61041_sectionid',
'Culoare Titlu',
'wpse_61041_inner_custom_box',
'post',
'side',
'high'
);
}
/* Afișează conținutul cutiei */
function wpse_61041_inner_custom_box($post)
{
// Folosește nonce pentru verificare
wp_nonce_field( 'wpse_61041_wpse_61041_field_nonce', 'wpse_61041_noncename' );
// Obține valoarea salvată, dacă nu există, "default" este selectat
$saved = get_post_meta( $post->ID, 'title_color', true);
if( !$saved )
$saved = 'default';
$fields = array(
'red' => __('Roșu', 'wpse'),
'green' => __('Verde', 'wpse'),
'blue' => __('Albastru', 'wpse'),
'default' => __('Implicit', 'wpse'),
);
foreach($fields as $key => $label)
{
printf(
'<input type="radio" name="title_color" value="%1$s" id="title_color[%1$s]" %3$s />'.
'<label for="title_color[%1$s]"> %2$s ' .
'</label><br>',
esc_attr($key),
esc_html($label),
checked($saved, $key, false)
);
}
}
/* Când postarea este salvată, salvează datele noastre personalizate */
function wpse_61041_save_postdata( $post_id )
{
// verifică dacă aceasta este o rutină de salvare automată.
// Dacă este, formularul nostru nu a fost trimis, așa că nu vrem să facem nimic
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return;
// verifică dacă aceasta provine din ecranul nostru și cu autorizația corespunzătoare,
// deoarece save_post poate fi declanșat în alte momente
if ( !wp_verify_nonce( $_POST['wpse_61041_noncename'], 'wpse_61041_wpse_61041_field_nonce' ) )
return;
if ( isset($_POST['title_color']) && $_POST['title_color'] != "" ){
update_post_meta( $post_id, 'title_color', $_POST['title_color'] );
}
}
cod bazat pe acest Răspuns
Cum să-l folosești în temă
Cu regulile CSS corespunzătoare în loc (h1.default
, h1.red
, etc), oriunde dorești să aplici clasa de culoare titlului (index.php
, single.php
, etc), folosește ceva de genul:
<?php $title_color = get_post_meta( get_the_ID(), 'title_color', true); ?>
<h1 class="entry-title <?php echo esc_attr($title_color); ?>"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>

Bine bine. Ar trebui să te uiți și la funcția checked
.

Încă o modificare pentru a curăța puțin funcția de callback. Poți să o testezi să te asiguri că încă funcționează conform așteptărilor. Am făcut-o doar ca să nu te repeți și să poți adăuga mai multe culori cu ușurință.

Lucrarea lui @brasofilo este excelentă, dar dacă nu dorești să faci prea multă programare, poți realiza același lucru folosind Câmpuri Personalizate
. Acestea sunt ascunse în mod implicit, dar le poți face vizibile din Opțiuni Ecran
. Creează un câmp nou și numește-l culoare
, apoi introdu numele culorii în câmpul valoare
. Apoi adaugă acest cod în fișierul header.php
al temei tale, sub tag-ul </head>
.
<style type="text/css">
/*Înlocuiește [nume-culoare] cu culoarea dorită, de exemplu: roșu*/
#roșu {color:"roșu";}
#verde {color:"verde";}
#[nume-culoare] {color:"[nume-culoare]";}
#[nume-culoare] {color:"[nume-culoare]";}
</style>
<?php
global $post;
$culoare = get_post_meta(get_the_ID(), 'culoare', true);
$id = "id="
?>
Apoi caută <h1 class="entry-title"
și adaugă acest cod în interiorul său <?php echo $id, $culoare;?>
. Acum, ori de câte ori vrei să schimbi culoarea titlului, alege culoare
din meniul derulant al câmpurilor personalizate și scrie numele culorii în câmpul valoare
.
