sirve - shortcodes wordpress tutorial
La representación de shortcode como texto no como shortcode deberÃa (3)
Estoy construyendo un sitio web de compras y estoy tratando de poner un código corto que muestre al cliente un botón de compra y la cantidad del producto que el cliente quiere comprar. En mi página de publicación, el código abreviado funciona bien:
http://warringah-plastics.com.au/blog/dt_catalog/recess-gasket-large/
pero en la página de archivo:
http://warringah-plastics.com.au/store/
el ID de código corto se muestra como texto y no como el botón y la cantidad reales, p. ej. [add_to_cart item = "FPROWAR-160713-1" showprice = "no" quantity = "user: 1" ajax = "yes"].
El código que funciona en la página de la publicación es este:
<?php
$my_textbox_value = mtbxr_val("shopping_shortcode");
echo do_shortcode("$my_textbox_value");
?>
pero solo muestra el texto del shortcode en esa página de archivo. ¿Alguien tiene alguna idea? Muy apreciado,
ACTUALIZAR
ESTE ES EL CÓDIGO QUE MUESTRA EL CORTO CÓDIGO CORRECTAMENTE:
<?php get_header(); ?>
<?php dt_storage(''have_sidebar'', true); ?>
<?php get_template_part(''top-bg''); ?>
<?php get_template_part(''parallax''); ?>
<div id="wrapper">
<?php get_template_part(''nav''); ?>
<div id="container">
<?php if( have_posts() ): while( have_posts() ): the_post(); ?>
<h1><?php the_title(); ?></h1>
<h1 style="color: #3C3C3B !important; margin-top:-20px !important;"><?php $terms_as_text = strip_tags( get_the_term_list( $wp_query->post->ID, ''dt_catalog_category'', '''', '', '', '''' ) );
echo $terms_as_text; ?></h1>
<?php
global $post;
$post_opts = get_post_meta($post->ID, ''_dt_catalog-post_options'', true);
if( !isset($post_opts[''hide_media'']) || (isset($post_opts[''hide_media'']) && !$post_opts[''hide_media'']) ) {
$args = array(
''post_type'' => ''attachment'',
''post_status'' => ''inherit'',
''posts_per_page'' => -1,
''post_parent'' => $post->ID,
''post_mime_type'' => ''image'',
''orderby'' => ''menu_order'',
''order'' => ''ASC''
);
if( !empty($post_opts[''hide_thumbnail'']) )
$args[''post__not_in''] = array( get_post_thumbnail_id() );
$dt_tmp_query = new WP_Query( $args );
if( $dt_tmp_query->have_posts() ) {
$slides = array();
foreach( $dt_tmp_query->posts as $slide ) {
$video = get_post_meta( $slide->ID, ''_dt_catalog_video_link'', true );
$tmp_arr = array();
$tmp_arr[''caption''] = $slide->post_excerpt;
if ( ! $video ) {
$slide_src = dt_get_resized_img( wp_get_attachment_image_src( $slide->ID, ''full'' ), array( ''w'' => 710 ) );
$tmp_arr[''alt''] = get_post_meta( $slide->ID, ''_wp_attachment_image_alt'', true );
$tmp_arr[''src''] = $slide_src[0];
$tmp_arr[''size_str''] = $slide_src[3];
} else {
$tmp_arr[''is_video''] = true;
$tmp_arr[''src''] = $video;
$tmp_arr[''size_str''] = array( 710, 1024 );
}
$slides[] = $tmp_arr;
}
dt_get_anything_slider( array( ''id'' => ''slider2'', ''items_arr'' => $slides ) );
}
}
?>
<?php $opts = get_post_meta($post->ID, ''_dt_catalog-goods_options'', true); ?>
<?php if( !empty($opts[''price'']) ): ?>
<span class="price"><?php _e(''Price: '', LANGUAGE_ZONE); echo esc_html($opts[''price'']); ?></span>
<?php endif; ?>
<?php
$my_textbox_value = mtbxr_val("shopping_shortcode");
echo do_shortcode("$my_textbox_value");
?>
<?php
the_content();
if( dt_is_page_soc_buttons_enabled(''catalog'') ) {
dt_get_like_buttons( get_the_ID() );
}
?>
<?php if( !empty($opts[''p_link'']) ): ?>
<a href="<?php echo esc_url($opts[''p_link'']); ?>" class="button" title=""><span><i class="dol"></i><?php _e(''Make purchase!'', LANGUAGE_ZONE); ?></span></a>
<?php endif; ?>
<p class="gap"></p>
<?php
$rel_works = get_post_meta($post->ID, ''_dt_catalog_related'', true);
if( isset($rel_works[''show_related'']) && $rel_works[''show_related''] ):
if( ''same'' == $rel_works[''related''] ) {
$rel_works[''related''] = wp_get_post_terms(
$post->ID,
''dt_catalog_category'',
array(''fields'' => ''ids'')
);
}
if( !empty($rel_works[''related'']) ):
?>
<p class="hr hr-narrow gap-small"></p>
<div class="gap"></div>
<div class="full-width w-photo">
<h2><?php _e(''Related Items'', LANGUAGE_ZONE); ?></h2>
<?php
if( ''same'' == $rel_works[''related''] ) {
$rel_works[''related''] = wp_get_post_terms(
$post->ID,
''dt_catalog_category'',
array(''fields'' => ''ids'')
);
}
$dt_tmp_query = new WP_Query( array(
''posts_per_page'' => -1,
''post_type'' => ''dt_catalog'',
''post_status'' => ''publish'',
''post__not_in'' => array($post->ID),
''tax_query'' => array( array(
''taxonomy'' => ''dt_catalog_category'',
''field'' => ''id'',
''terms'' => $rel_works[''related''],
''operator'' => ''IN''
) )
) );
if( $dt_tmp_query->have_posts() ) {
$thumb_arr = dt_core_get_posts_thumbnails( $dt_tmp_query->posts );
$items = array();
foreach( $dt_tmp_query->posts as $rel_post ) {
$item = array();
$img = dt_get_resized_img(
dt_get_thumb_meta($thumb_arr[''thumbs_meta''], ''full'', $rel_post->ID),
array(''w'' => 196, ''h'' => 123, ''use_noimage'' => true)
);
$item[''src''] = $img[0];
$item[''size_str''] = $img[2];
$item[''post_id''] = $rel_post->ID;
$item[''desc''] = apply_filters(''get_the_excerpt'', $rel_post->post_excerpt);
$item[''title''] = apply_filters(''the_title'', $rel_post->post_title, $rel_post->ID);
$item[''alt''] = esc_attr( $item[''title''] );
$items[] = $item;
}
$args = array( ''items_arr'' => $items, ''id'' => '''', ''class'' => ''list-carousel recent bx'', ''ul_class'' => ''slider1'' );
$args[''wrap''] = ''<div class="%CLASS% bx">%SLIDER%</div>'';
if( ! empty( $rel_works[''show_desc''] ) || ! empty( $rel_works[''show_title''] ) ) {
$title = '''';
if( ! empty( $rel_works[''show_title''] ) ) {
$title = ''<h3><a href="%LINK%" class="head">%TITLE%</a></h3>'';
}
$desc = '''';
if( ! empty( $rel_works[''show_desc''] ) ) {
$desc = ''<p>%DESC%</p>'';
}
$args[''item_wrap''] = ''
<li>
<div class="textwidget">
<div class="textwidget-photo">
<a class="photo" href="%LINK%"><img src="%IMG_SRC%" alt="%ALT%" %IMG_SIZE% /></a>
</div>
<div class="widget-info">
<div class="info">
'' . $title . $desc . ''
</div>
</div>
</div>
</li>
'';
}
dt_get_carousel_slider( $args );
}
?>
</div>
<?php endif; endif; ?>
<?php comments_template(); ?>
<?php
endwhile;
endif;
?>
</div>
<?php dt_widget_area(''sidebar'', null, ''sidebar_4''); ?>
</div>
<?php get_footer(); ?>
Y ESTE ES EL CÓDIGO QUE EXHIBE EL CÓDIGO CORTO SIMPLEMENTE COMO TEXTO:
<?php
global $post;
$page_data = dt_storage( ''page_data'' );
$page_opts = ! empty( $page_data[''page_options''] ) ? $page_data[''page_options''] : array();
$add_data = dt_storage( ''add_data'' );
$first_class = '''';
if( 1 === dt_storage(''post_is_first'') ) {
$first_class = '' first'';
dt_storage( ''post_is_first'', -1 );
}
$opts = get_post_meta($post->ID, ''_dt_catalog-goods_options'', true);
?>
<div class="<?php dt_portfolio_classes( ''2_col-list'', ''block'' ); echo $first_class; ?>">
<?php
$h = 220;
if ( ! empty ( $page_opts[''thumb_height''] ) ) {
$h = $page_opts[''thumb_height''];
}
dt_get_thumb_img( array(
''class'' => ''photo'',
''use_noimage'' => true,
''href'' => get_permalink(),
''thumb_opts'' => array( ''w'' => 343, ''h'' => $h )
),
''<div class="textwidget-photo">
<a %HREF% %CLASS% %TITLE% %CUSTOM%><img %ALT% %SRC% %IMG_CLASS% %SIZE% /></a>
</div>''
);
?>
<div class="<?php dt_portfolio_classes( ''2_col-list'', ''info'' ); ?>">
<a class="<?php dt_portfolio_classes( ''2_col-list'', ''head'' ); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php if( !empty($opts[''price'']) ): ?>
<span class="price"><?php _e(''Price: '', LANGUAGE_ZONE); echo esc_html($opts[''price'']); ?></span>
<?php endif; ?>
<?php
dt_the_content();
dt_details_link();
dt_edit_link();
?>
<div id="specialpriceshortcode">
<?php
$my_textbox_value = mtbxr_val("shopping_shortcode");
echo do_shortcode("$my_textbox_value");
?>
</div>
</div>
</div>
Intente utilizar comillas simples en la llamada a do_shortcode, de esta manera:
echo do_shortcode(''$my_textbox_value'');
Sin embargo, es más probable que el shortcode no esté definido en la página de archivo, por lo que necesitaría ver dónde se está creando una instancia para ver si ese es el problema. Normalmente, cuando un shortcode simplemente hace eco del contenido, significa que shortcode no existe. Puede probar con bastante facilidad utilizando la función shortcode_exists ():
<?php if ( shortcode_exists( ''add_to_cart'' ) ) { echo "The shortcode exists";} ?>
Si eso no funciona, entonces sabrá que el problema es que el shortcode no está registrado en su página de archivos. Si funciona, entonces sabrá que es algo con el formato del contenido que se pasa al código corto.
Normalmente, su código abreviado se registra en un complemento o en el archivo functions.php de su tema. En un complemento, a menudo es algo así como:
add_action(''init'', ''register_my_shortcode'');
function register_my_shortcode(){
add_shortcode(''my_shortcode'', ''do_my_shortcode'');
}
Y luego tendrías una función do_my_short_code () que realmente genera el contenido. Con algo así el shortcode se registra a través del gancho ''init'' ( http://codex.wordpress.org/Plugin_API/Action_Reference ) que se llama antes de que WP haya comenzado a determinar qué plantilla usar, qué contenido generar, etc. .
Sin embargo, algunos complementos registrarán el código corto de una manera que solo esté disponible en páginas / publicaciones en las que potencialmente se utilizará. Por ejemplo, puedo pensar en un complemento donde registran el código corto y en cola algunos javascripts en la misma función. Esa función comprueba si estás en una página en particular antes de que se ejecute para que los archivos js no se incluyan innecesariamente en todo el lugar. Como el registro de shortcode tiene lugar en la misma función, significa que el shortcode solo existe en esas páginas.
De todos modos, si el shortcode se muestra como existente en su página de archivos, sabe que ese no es el problema, así que revíselo primero y dígame qué encuentra.
Agregue esto a sus funciones.php
// Allow shortcodes on widgets
add_filter(''widget_text'',''do_shortcode'');
// Allow shortcodes on pages (not tested, but should work)
add_filter(''the_content'',''do_shortcode'');