Kait / filter WordPress menyisipkan sebelum konten atau setelah judul


29

mencoba menyisipkan konten sebelum memposting konten di functions.php saya - Saya tahu cara menggunakan kait wp biasa, tetapi tidak yakin cara memasukkan ke dalam area lain.

Mencoba ini, tetapi membunuh konten pada jenis posting lain:

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

Bagaimana saya membuat ini bersyarat?

Jawaban:


39

Cukup gunakan the_contentfilter, misalnya:

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

Pada dasarnya, Anda menambahkan konten posting setelah konten khusus Anda, lalu mengembalikan hasilnya.

Edit

Seperti yang ditunjukkan Franky @bueltge dalam komentarnya, prosesnya sama untuk judul posting; cukup tambahkan filter ke the_titlehook:

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

Perhatikan bahwa, dalam hal ini, Anda menambahkan konten khusus setelah Judul. (Tidak masalah yang mana; Aku hanya pergi dengan apa yang kamu tentukan dalam pertanyaanmu.)

Edit 2

Alasan kode contoh Anda tidak berfungsi adalah karena Anda hanya kembali $contentketika kondisi Anda terpenuhi . Anda harus kembali $content, tanpa dimodifikasi, sebagai elsepersyaratan Anda. misalnya:

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

Dengan cara ini, untuk posting yang bukan dari tipe posting 'properti', $contentdikembalikan, tidak dimodifikasi.


juga dimungkinkan untuk menambahkan konten setelah judul; filter the_title adalah hook yang tepat.
— bueltge

@ChipBennett pertanyaan - bagaimana melakukan ini dengan logika hanya untuk jenis posting khusus - Saya mencoba untuk membungkusnya if ( is_single() && 'property' == get_post_type() ) {}tetapi itu tidak berhasil untuk saya
— Jason

@ChipBennett - Saya membuatnya bekerja pada jenis posting kustom saya, tetapi konten menghilang dari jenis posting lainnya. Lihat edit di atas.
— Jason

1
Itu karena Anda tidak kembali $contentuntuk jenis posting selain untuk jenis posting khusus Anda. Lihat jawaban yang diperbarui.
— Chip Bennett

Hanya sebuah catatan - Anda tidak memerlukan blok {} lainnya - hanya pengembalian balik. Jika kondisi terpenuhi, pengembalian di if () membawa Anda keluar dari fungsi, jika Anda membuatnya melewati if () maka pengembalian mundur akan memukul.
— phatskat

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

The is_singularcek tag kondisional jika posting tunggal sedang ditampilkan dan memungkinkan Anda untuk menentukan $ post_types parameter yang dalam hal ini adalah properti.

Juga, Anda mungkin ingin melihatnya do_shortcode


Terlambat ke permainan di sini, tetapi Anda mengembalikan variabel kosong dalam contoh yang is_singular ('properti') mengembalikan false. Jika Anda membalik logika Anda di sana, dan cukup mengembalikan $ konten dalam kasus itu, Anda akan berakhir dengan kode yang lebih bersih dan lebih mudah dibaca.
— Travis Weston

Bisa juga menambahkan yang lain atau menggunakan operator ternary. Ini adalah contoh cepat yang tidak sepenuhnya diuji yang dapat diperpanjang.
— Brad Dalton
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.