wake-up-neo.net

Wie kann ich einen benutzerdefinierten Beitragstyp für Benutzer in der Datei authors.php anzeigen?

Hier ist der Code, den ich habe. Es werden 100 benutzerdefinierte Posts angezeigt, die als Kampagnen bezeichnet werden. Ich brauche es, um nur die aktuellen Benutzer anzuzeigen. Deshalb sollte author/joe nur die Kampagnen von joe zeigen.

  <?php

   if(isset($_GET['author_name'])) :

    $curauth = get_userdatabylogin($author_name);

    else :

    $curauth = get_userdata(intval($author));

     endif;

     ?>




<h2>Campaigns by <?php echo $curauth->nickname; ?>:</h2>



<?php
$args = array(
'posts_per_page' => 100,
'post_type' => 'campaigns'

  );
query_posts($args);
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <li>

        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>">

        <?php the_title(); ?></a>,



    </li>


<?php endwhile; else: ?>

    <p><?php _e('No posts by this author.'); ?></p>


<?php endif; ?>
1
JediTricks007

Verwenden Sie query_posts nicht und ersetzen Sie im Übrigen die Hauptabfrage durch eine benutzerdefinierte Abfrage. Es ist immer problematisch und schafft mehr Probleme, als es zu lösen.

Verwenden Sie die Hauptabfrage und verwenden Sie pre_get_posts, um die Hauptabfrage nach Bedarf zu ändern.

Um Ihr Problem zu lösen, entfernen Sie die Zeile query_posts. So sollte author.php aussehen.

<?php

   if(isset($_GET['author_name'])) :

        $curauth = get_userdatabylogin($author_name);

    else :

        $curauth = get_userdata(intval($author));

    endif;

?>

<h2>Campaigns by <?php echo $curauth->nickname; ?>:</h2>

<?php

if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <li>

        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>">

        <?php the_title(); ?></a>,



    </li>


<?php endwhile; else: ?>

    <p><?php _e('No posts by this author.'); ?></p>


<?php endif; ?>

Fügen Sie Folgendes in Ihre functions.php-Datei ein

add_action( 'pre_get_posts', function ( $q ) {

    if( !is_admin() && $q->is_main_query() && $q->is_author() ) {

        $q->set( 'posts_per_page', 100 );
        $q->set( 'post_type', 'campaigns' );

    }

});

Dies sollte Ihr Problem lösen

3
Pieter Goosen

Ich sehe das Problem nicht in der Verwendung von WP_Query ...
hat einen author-Parameter.

$cuser_id = get_current_user_id();

$args = array(
    'post_type'         =>  'campaigns',
    'posts_per_page'    =>  100,
    'author'            =>  $cuser_id,

);
$the_query = new WP_Query($args);

if ($the_query->have_posts()) {
    while ($the_query->have_posts()) {
        $the_query->the_post();

        // BUILD AND DISPLY CAMPAIGN DATA
        $pid    =   get_the_ID();
        $ptitle =   get_the_title();
        $plink  =   get_permalink();

        echo '<li><a href="'.$plink.'">'.$ptitle.'</a></li>';

    }

} else {
    echo 'You have published any campaigns yet';
}
wp_reset_postdata();

Hoffe das hilft.

0
Sagive SEO