Gefälschter WordPress-Post mit gefälschtem Postmeta.

Lesezeit: 4 Minuten

Benutzeravatar von Yervand Khalapyan
Yervand Khalapyan

Vor einigen Tagen habe ich einen Beitrag “Wie man einen gefälschten WordPress-Beitrag für jeden Benutzer separat erstellt” erstellt.

Ich habe es geschafft, einen gefälschten Beitrag zu erstellen, indem ich verwendet habe Dies Ressource. Alles war gut, es sei denn, ich habe versucht, dasselbe mit der benutzerdefinierten Feldoption zu tun. Das Design, das ich verwende, hat ein separates benutzerdefiniertes Feld wp_postmeta die das eingebettete Video separat enthält <div>.
Hier ist der Code, den ich versucht habe, um die benutzerdefinierte Feldoption festzulegen.

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'); 

Der Teil, den ich improvisiert habe, ist $wp_query->meta_query=array($vid,$vid1);aber es hilft nicht, da es erwartet wird, dass selbst es diese 2 Optionen festlegen würde, die es nicht festlegen würde post_id und das Thema konnte nicht finden, für welchen Beitrag die Option gemacht wurde. Jungs irgendwelche Ideen, wie ich das durchführen kann?

Benutzeravatar von birgire
Birgire

Das $wp_query->meta_query Attribut

Soweit ich das verstehe $wp_query -Objekt können Sie die Ergebnisdaten nicht direkt zum hinzufügen $wp_query->meta_query -Attribut, um die benutzerdefinierten Post-Metadaten zu fälschen.

Es dient nur zum Erstellen der Metaabfragen und ist vom Typ WP_Meta_Query.

Wenn Sie sich das ansehen Quellcode für die WP_Query Klasse finden Sie diese Zeilen:

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

Hier ist eine Beschreibung der WP_Meta_Query Klasse.

Mögliche Lösung

Sie können es stattdessen versuchen get_post_metadata filtern oder allgemein get_x_metadata wo x ist in {post, comment, user}.

Hier ist ein Beispiel:

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 );

zu gefälscht der Wert der video_url Meta-Schlüssel, wenn Sie verwenden:

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

in deinem Thema.

Ähnliches für die _oembed_576540b29025537e24e5bcdcae946a46 Meta-Schlüssel.

Soweit ich weiß, ist die meta_query eigentlich ein Array, kein Objekt, also versuchen Sie Folgendes:

$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>');

1397530cookie-checkGefälschter WordPress-Post mit gefälschtem Postmeta.

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy