Здравейте, туй като наскоро ми се наложи да се прави. Реших и да го споделя тук. Ако искате да изкарате някаква къстам променлива, която да е за всеки пост на него или някой бокс от архив страница, ето и начина:
Отивате в functions.php на темата и добавяте следния код:
После намирате лейута, в който искате да го интегрирате:
И слагате в началото при променливите нова:
И по надолу, на мястото, на което искате да се се появи в HTML-а:
Така може да се ползва. Защо? Защото в моя случай нямах Custom field в пост-а при редакция, иначе си има полета с value и key, които се ползват за такива случаи. А това е само, ако не нямате друг избор. theme-name е името на темата.
Разбира се, може да си слагате какъвто искате стил и вече сте вие.
Отивате в functions.php на темата и добавяте следния код:
PHP:
function custom_meta_box() {
add_meta_box(
'custom_meta_box_id',
'Name of the field',
'custom_meta_box_callback',
'post',
'normal',
'default'
);
}
add_action('add_meta_boxes', 'custom_meta_box');
function custom_meta_box_callback($post) {
wp_nonce_field('custom_meta_box_nonce_action', 'custom_meta_box_nonce');
$custom_field_value = get_post_meta($post->ID, '_custom_field_key', true);
echo '<textarea id="custom_field_id" name="custom_field_name" style="width: 100%;" rows="5">' . esc_textarea($custom_field_value) . '</textarea>';
}
function save_custom_meta_box_data($post_id) {
if (!isset($_POST['custom_meta_box_nonce']) || !wp_verify_nonce($_POST['custom_meta_box_nonce'], 'custom_meta_box_nonce_action')) {
return;
}
if (isset($_POST['custom_field_name'])) {
$custom_field_value = sanitize_textarea_field($_POST['custom_field_name']);
update_post_meta($post_id, '_custom_field_key', $custom_field_value);
}
}
add_action('save_post', 'save_custom_meta_box_data');
function add_custom_field_to_body($content) {
if (is_single()) {
global $post;
$custom_field_value = get_post_meta($post->ID, '_custom_field_key', true);
if (!empty($custom_field_value)) {
$content .= "\n<!-- Name of the field: " . esc_html($custom_field_value) . " -->\n";
}
}
return $content;
}
add_filter('the_content', 'add_custom_field_to_body');
После намирате лейута, в който искате да го интегрирате:
И слагате в началото при променливите нова:
PHP:
$variable = get_post_meta($post_id, '_custom_field_key', true);
И по надолу, на мястото, на което искате да се се появи в HTML-а:
HTML:
<?php if (!empty($variable)) : ?>
<div class="variable-style">
<?php echo esc_html__('Name of field: ', 'theme-name') . esc_html($variable); ?>
</div>
<?php endif; ?>
Така може да се ползва. Защо? Защото в моя случай нямах Custom field в пост-а при редакция, иначе си има полета с value и key, които се ползват за такива случаи. А това е само, ако не нямате друг избор. theme-name е името на темата.
Разбира се, може да си слагате какъвто искате стил и вече сте вие.
