tag name all php mysql wordpress wordpress-plugin wordpress-theming

php - name - get all tags wordpress



PublicaciĆ³n falsa de Wordpress con postmeta falso. (2)

Hace varios días hice una publicación " Cómo hacer una publicación falsa de WordPress para cada usuario por separado "

Logré hacer una publicación falsa usando este recurso. Todo fue bueno a menos que intenté hacer lo mismo con la opción de campo personalizado. El tema que estoy usando tiene un campo personalizado separado en wp_postmeta que incluye el video incrustado en <div> separado.
Aquí está el código que traté de usar para configurar la opción de campo personalizado.

function kpg_f_content() { global $wp_query; $post = new stdClass(); $post -> ID = 1; $post -> post_category = array(''uncategorized''); //Add some categories. an array()??? $post -> post_content = ''hey here we are a real post''; //The full text of the post. $post -> post_excerpt = ''hey here we are a real post''; //For all your post excerpt needs. $post -> post_status = ''publish''; //Set the status of the new post. $post -> post_title = ''Fake Title 1''; //The title of your post. $post -> post_type = ''post''; //Sometimes you might want to post a page. $post -> post_date = ''[ 2013-12-19 5:34:3 ]''; //The time post was made. $post -> post_date_gmt = ''[ 2013-12-19 5:34:3 ]''; //The time post was made, in GMT. $vid = new stdClass(); $vid -> meta_key = ''video_url''; $vid -> meta_value = ''http://www.youtube.com/watch?v=ucivXRBrP_0''; $vid1 = new stdClass(); $vid1 -> meta_key = ''_oembed_576540b29025537e24e5bcdcae946a46''; $vid1 -> meta_value = ''<iframe width="500" height="281" src="http://www.youtube.com/embed/ucivXRBrP_0?feature=oembed" frameborder="0" allowfullscreen></iframe>''; $wp_query -> queried_object = $post; $wp_query -> post = $post; $wp_query -> found_posts = 2; $wp_query -> post_count = 2; $wp_query -> max_num_pages = 2; $wp_query -> is_single = 1; $wp_query -> is_404 = false; $wp_query -> is_posts_page = 0; $wp_query -> posts = $post; $wp_query -> page = false; $wp_query -> is_post = true; $wp_query -> page = false; $wp_query -> meta_query = array($vid, $vid1); } add_action(''wp'', ''kpg_f_content'');

La parte que improvisé es $wp_query->meta_query=array($vid,$vid1); , pero no ayuda, ya que esperaba que incluso establecería estas 2 opciones, no establecería el post_id y el tema no podría encontrar para qué publicación fue la opción realizada. Chicos todas las ideas, ¿cómo puedo hacer esto?


Por lo que sé, la meta_query es en realidad una matriz, no un objeto, entonces, intente:

$vid = array(''meta_key'' => ''video_url'', ''meta_value'' => ''http://www.youtube.com/watch?v=ucivXRBrP_0''); $vid1 = array(''meta_key'' = ''_oembed_576540b29025537e24e5bcdcae946a46'', ''meta_value'' => ''<iframe width="500" height="281" src="http://www.youtube.com/embed/ucivXRBrP_0?feature=oembed" frameborder="0" allowfullscreen></iframe>'');


El $wp_query->meta_query

Por lo que entiendo el objeto $wp_query , no puede agregar los datos del resultado directamente al $wp_query->meta_query para falsificar los metadatos de la publicación personalizada.

Es solo para construir las meta-consultas y es del tipo WP_Meta_Query .

Si revisa el código fuente de la clase WP_Query , encontrará estas líneas:

// Parse meta query $this->meta_query = new WP_Meta_Query(); $this->meta_query->parse_query_vars( $q );

Aquí hay una descripción de la clase WP_Meta_Query .

Solución posible

En su lugar, puede probar el filtro get_post_metadata , o en general get_x_metadata donde x está en {post, comment, user} .

Aquí hay un ejemplo:

function custom_get_post_metadata( $meta_value, $object_id, $meta_key, $single ) { // Change the meta value of the meta key ''video_url'' // for post id 1 when ''single'' is TRUE if( 1 === $object_id && TRUE === $single && ''video_url'' === $meta_key ) { $meta_value = ''http://www.youtube.com/watch?v=ucivXRBrP_0''; } return $meta_value; } add_filter( ''get_post_metadata'', ''custom_get_post_metadata'', 99, 4 );

para simular el valor de la video_url cuando usas:

echo get_post_meta( get_the_ID(), ''video_url'' , TRUE );

en tu tema

Similar para la _oembed_576540b29025537e24e5bcdcae946a46 .