web-dev-qa-db-de.com

WordPress Hooks/Filter werden vor dem Inhalt oder nach dem Titel eingefügt

versuche, in meiner functions.php Inhalte vor den Post-Inhalten einzufügen - Ich weiß, wie man die regulären wp-Hooks verwendet, weiß aber nicht, wie man sie in andere Bereiche einfügt.

Versuchte dies, aber es löscht den Inhalt eines anderen Beitragstyps:

function property_slideshow( $content ) {
 if ( is_single() && 'property' == get_post_type() ) {
    $custom_content = '[portfolio_slideshow]';
    $custom_content .= $content;
    return $custom_content;
    } 
}
add_filter( 'the_content', 'property_slideshow' );

Wie mache ich das abhängig?

28
Jason

Verwenden Sie einfach den Filter the_content, z.

<?php
function theme_slug_filter_the_content( $content ) {
    $custom_content = 'YOUR CONTENT GOES HERE';
    $custom_content .= $content;
    return $custom_content;
}
add_filter( 'the_content', 'theme_slug_filter_the_content' );
?>

Grundsätzlich hängen Sie den Inhalt der Posts nach Ihren benutzerdefinierten Inhalten an und geben dann das Ergebnis zurück.

Bearbeiten

Wie Franky @bueltge in seinem Kommentar ausführt, ist der Vorgang für den Post-Titel derselbe. Fügen Sie einfach einen Filter zum Hook the_title hinzu:

<?php
function theme_slug_filter_the_title( $title ) {
    $custom_title = 'YOUR CONTENT GOES HERE';
    $title .= $custom_title;
    return $title;
}
add_filter( 'the_title', 'theme_slug_filter_the_title' );
?>

Beachten Sie, dass Sie in diesem Fall Ihren benutzerdefinierten Inhalt nach dem Titel anhängen. (Es spielt keine Rolle, ich habe mich nur an das gehalten, was Sie in Ihrer Frage angegeben haben.)

Bearbeiten 2

Der Grund, warum Ihr Beispielcode nicht funktioniert, ist, dass Sie nur $content zurückgeben, wenn Ihre Bedingung erfüllt ist . Sie müssen $content unverändert als else an Ihre Bedingung zurückgeben. z.B.:

function property_slideshow( $content ) {
    if ( is_single() && 'property' == get_post_type() ) {
        $custom_content = '[portfolio_slideshow]';
        $custom_content .= $content;
        return $custom_content;
    } else {
        return $content;
    }
}
add_filter( 'the_content', 'property_slideshow' );

Auf diese Weise wird für Posts, die nicht den Post-Typ 'property' haben, $content unverändert zurückgegeben.

38
Chip Bennett
function property_slideshow( $content ) {
    if ( is_singular( 'property' ) ) {
        $custom_content = do_shortcode( '[portfolio_slideshow]' );
        $custom_content .= $content;
        }
        return $custom_content;
}
add_filter( 'the_content', 'property_slideshow' );

Das Tag is_singular conditional prüft, ob ein einzelner Beitrag angezeigt wird, und ermöglicht es Ihnen, den Parameter $ post_types anzugeben, der in diesem Fall eine Eigenschaft ist.

Vielleicht möchten Sie auch do_shortcode ansehen.

0
Brad Dalton