Ayuda para mostrar en el theme código introducido en functions.php (meta_box)

ranarevolution Seguir

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
2 Oct 2011
Mensajes
53
hola tengo el siguiente codigo que se introduce en el archivo funciones.php lo que hace es guardar un enlace i un nombre de enlace y permite repetir esta accion una i otra vez esta hecha a base de metabox

PHP:
function hhs_get_sample_options() {
    $options = array (
        'Option 1' => 'option1',
        'Option 2' => 'option2',
        'Option 3' => 'option3',
        'Option 4' => 'option4',
    );

    return $options;
}

add_action('admin_init', 'hhs_add_meta_boxes', 1);
function hhs_add_meta_boxes() {
    add_meta_box( 'repeatable-fields', 'Repeatable Fields', 'hhs_repeatable_meta_box_display', 'post', 'normal', 'default');
}

function hhs_repeatable_meta_box_display() {
    global $post;

    $repeatable_fields = get_post_meta($post->ID, 'repeatable_fields', true);
    $options = hhs_get_sample_options();

    wp_nonce_field( 'hhs_repeatable_meta_box_nonce', 'hhs_repeatable_meta_box_nonce' );
    ?>
    <script type="text/javascript">
    jQuery(document).ready(function( $ ){
        $( '#add-row' ).on('click', function() {
            var row = $( '.empty-row.screen-reader-text' ).clone(true);
            row.removeClass( 'empty-row screen-reader-text' );
            row.insertBefore( '#repeatable-fieldset-one tbody>tr:last' );
            return false;
        });

        $( '.remove-row' ).on('click', function() {
            $(this).parents('tr').remove();
            return false;
        });
    });
    </script>

    <table id="repeatable-fieldset-one" width="100%">
    <thead>
        <tr>
            <th width="40%">Name</th>
            <th width="12%">Select</th>
            <th width="40%">URL</th>
            <th width="8%"></th>
        </tr>
    </thead>
    <tbody>
    <?php

    if ( $repeatable_fields ) :

    foreach ( $repeatable_fields as $field ) {
    ?>
    <tr>
        <td><input type="text" class="widefat" name="name[]" value="<?php if($field['name'] != '') echo esc_attr( $field['name'] ); ?>" /></td>

        <td>
            <select name="select[]">
            <?php foreach ( $options as $label => $value ) : ?>
            <option value="<?php echo $value; ?>"<?php selected( $field['select'], $value ); ?>><?php echo $label; ?></option>
            <?php endforeach; ?>
            </select>
        </td>

        <td><input type="text" class="widefat" name="url[]" value="<?php if ($field['url'] != '') echo esc_attr( $field['url'] ); else echo 'http://'; ?>" /></td>

        <td><a class="button remove-row" href="#">Remove</a></td>
    </tr>
    <?php
    }
    else :
    // show a blank one
    ?>
    <tr>
        <td><input type="text" class="widefat" name="name[]" /></td>

        <td>
            <select name="select[]">
            <?php foreach ( $options as $label => $value ) : ?>
            <option value="<?php echo $value; ?>"><?php echo $label; ?></option>
            <?php endforeach; ?>
            </select>
        </td>

        <td><input type="text" class="widefat" name="url[]" value="http://" /></td>

        <td><a class="button remove-row" href="#">Remove</a></td>
    </tr>
    <?php endif; ?>

    <!-- empty hidden one for jQuery -->
    <tr class="empty-row screen-reader-text">
        <td><input type="text" class="widefat" name="name[]" /></td>

        <td>
            <select name="select[]">
            <?php foreach ( $options as $label => $value ) : ?>
            <option value="<?php echo $value; ?>"><?php echo $label; ?></option>
            <?php endforeach; ?>
            </select>
        </td>

        <td><input type="text" class="widefat" name="url[]" value="http://" /></td>

        <td><a class="button remove-row" href="#">Remove</a></td>
    </tr>
    </tbody>
    </table>

    <p><a id="add-row" class="button" href="#">Add another</a></p>
    <?php
}

add_action('save_post', 'hhs_repeatable_meta_box_save');
function hhs_repeatable_meta_box_save($post_id) {
    if ( ! isset( $_POST['hhs_repeatable_meta_box_nonce'] ) ||
    ! wp_verify_nonce( $_POST['hhs_repeatable_meta_box_nonce'], 'hhs_repeatable_meta_box_nonce' ) )
        return;

    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        return;

    if (!current_user_can('edit_post', $post_id))
        return;

    $old = get_post_meta($post_id, 'repeatable_fields', true);
    $new = array();
    $options = hhs_get_sample_options();

    $names = $_POST['name'];
    $selects = $_POST['select'];
    $urls = $_POST['url'];

    $count = count( $names );

    for ( $i = 0; $i < $count; $i++ ) {
        if ( $names[$i] != '' ) :
            $new[$i]['name'] = stripslashes( strip_tags( $names[$i] ) );

            if ( in_array( $selects[$i], $options ) )
                $new[$i]['select'] = $selects[$i];
            else
                $new[$i]['select'] = '';

            if ( $urls[$i] == 'http://' )
                $new[$i]['url'] = '';
            else
                $new[$i]['url'] = stripslashes( $urls[$i] ); // and however you want to sanitize
        endif;
    }

    if ( !empty( $new ) && $new != $old )
        update_post_meta( $post_id, 'repeatable_fields', $new );
    elseif ( empty($new) && $old )
        delete_post_meta( $post_id, 'repeatable_fields', $old );
}


el resultado de este codigo se muestra en el editor de post . eso esta bien porque ahi se crean los post aqui como sale osea el codigo funciona de maravilla
gGZPu.png

mi problema
como muestro este metabox en el single.php que codigo debo poner en el single.php para que se pueda mostar en el theme que al ir añadiendo en el editor de post enlaces con su nombre al mismo tiempo de forma automatica valla apareciendo el resultado en el post ayuda por favor
 

Lopezito

Zeta
Diseñador
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
13 Dic 2011
Mensajes
1.515
PHP:
print_r(get_post_meta(get_the_ID(),'repeatable_fields',true));
 

ranarevolution

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
2 Oct 2011
Mensajes
53
PHP:
print_r(get_post_meta(get_the_ID(),'repeatable_fields',true));

casi casi amigo pero el codigo que me lanza es
Array (
[0] =>
Array (
[name] => fila1co
[select] =>fila1coco
=> fila1cococo [1] => Array ( [n...apareciendo en el post tal y como los ingreso
 

Lopezito

Zeta
Diseñador
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
13 Dic 2011
Mensajes
1.515
Jaja no man, te pase eso para saber la estructura porque me daba algo de flojera darte todo de una.

PHP:
$campos = get_post_meta(get_the_ID(),'repeatable_fields',true);
$i = 0;
foreach($campos as $key => $c){
echo 'Name: '.$c[$i]['name'];
echo 'Select: '.$c[$i]['select'];
echo 'URL: '.$c[$i]['url'];
$i++;
}

casi casi amigo pero el codigo que me lanza es
Array (
[0] =>
Array (
[name] => fila1co
[select] =>fila1coco
=> fila1cococo [1] => Array ( [n...ndo en el post tal y como los ingreso[/QUOTE]
 

ranarevolution

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
2 Oct 2011
Mensajes
53
Jaja no man, te pase eso para saber la estructura porque me daba algo de flojera darte todo de una.

PHP:
$campos = get_post_meta(get_the_ID(),'repeatable_fields',true);
$i = 0;
foreach($campos as $key => $c){
echo 'Name: '.$c[$i]['name'];
echo 'Select: '.$c[$i]['select'];
echo 'URL: '.$c[$i]['url'];
$i++;
}
ya voy entendiendo un poco pero del codigo que me mandaste el resultado solo es este Name: Select: URL: Name: Select: URL:
 

Lopezito

Zeta
Diseñador
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
13 Dic 2011
Mensajes
1.515
Ando medio atareado, tal vez no lo escribí bien, intenta con esto:

PHP:
$campos = get_post_meta(get_the_ID(),'repeatable_fields',true);
foreach($campos as $key => $c){
echo 'Name: '.$c['name'];
echo 'Select: '.$c['select'];
echo 'URL: '.$c['url'];
}
 

ranarevolution

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
2 Oct 2011
Mensajes
53
Ando medio atareado, tal vez no lo escribí bien, intenta con esto:

PHP:
$campos = get_post_meta(get_the_ID(),'repeatable_fields',true);
foreach($campos as $key => $c){
echo 'Name: '.$c['name'];
echo 'Select: '.$c['select'];
echo 'URL: '.$c['url'];
}



grannde papaaaá eres lo maximo
se muestra justo lo necesario introduczo este codigo

<?php $campos = get_post_meta(get_the_ID(),'repeatable_fields',true);
foreach($campos as $key => $c){
echo '<li><div>'.$c['name'];
echo '<div>'.$c['select'];
echo '<div>'.$c['url'];
}
?>

y el resultado es

coco
option1
cocodos

trigo
option2
trigodos

gfffffffff
option1
fffffffffg

mi pregunta es si "coco" lo puedo reemplazar por una imagen
y hacer que "option1" se convierta en un enlace
que codigo devo poner para eso
 

Lopezito

Zeta
Diseñador
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
13 Dic 2011
Mensajes
1.515
PHP:
<?php
$campos = get_post_meta(get_the_ID(),'repeatable_fields',true);
foreach($campos as $key => $c){
$name = $c['name'];
$select = $c['select'];
$url = $c['url'];
echo '<a href="'.$url.'"><img src="'.$name.'" /></a><br/>';
}
?>

O si queres usar $select, cambias $url por $select en:

PHP:
echo '<a href="'.$url.'"><img src="'.$name.'" /></a><br/>';

grannde papaaaá eres lo maximo
se muestra justo lo necesario introduczo este codigo

<?php $campos = get_post_meta(get_the_ID(),'repeatable_fields',true);
foreach($campos as $key => $c){
echo '<li><div>'.$c['name'];
echo '<div>'.$c['select'];
echo '<div>'.$c['url'];
}
?>

y el resultado es

coco
option1
cocodos

trigo
option2
trigodos

gfffffffff
option1
fffffffffg

mi pregunta es si "coco" lo puedo reemplazar por una imagen
y hacer que "option1" se convierta en un enlace
que codigo devo poner para eso
 
Arriba