Saya akan menjelaskan apa yang ingin saya capai.
Saya ingin memiliki komentar reguler (datar / klasik) tanpa utas dengan tautan balasan ke setiap komentar. Ketika seseorang membalas komentar, komentar balasan akan berakhir di bagian atas (atau bawah) sebagai komentar terbaru sama seperti komentar default non-utas, tetapi tidak seperti komentar non-utas default, balasan harus menampilkan tautan ke komentar / penulis asli.
Ada solusi yang diusulkan di forum wordpress:
http://wordpress.org/support/topic/reply-to-link-for-chronological-non-threaded-comments
Aku hanya tidak membuatnya bekerja. Saya tidak yakin dalam file apa poster itu menempatkan potongan kode yang berbeda. Saya mencoba menggunakan kode dan menghubungkan fungsi ke comment_post:
add_action('comment_post', 'print_reply_link', 10, 2);
function print_reply_link( $comment_id, $approved ){
if( $approved ){
$comment = get_comment( $comment_id );
if ( $comment->comment_parent ) {
$parent = get_comment( $comment->comment_parent );
$parent_link = esc_url( get_comment_link( $comment->comment_parent ) );
printf( ' in reply to <a href="%1$s">%2$s</a>', $parent_link, $parent->comment_author );
}
}
}
Ini mengembalikan halaman kosong dengan "in reply to authorname ". Setelah memuat ulang kiriman, komentar balasan muncul dengan benar tetapi tanpa tautan ke komentar asli
Keterampilan pengkodean saya sangat mendasar sehingga saya tidak tahu bagaimana harus melanjutkan. Akan sangat berterima kasih atas bantuannya.
href
dalama
yang mengikuti 'sebagai balasan atas' sesuai alat 'Periksa Elemen' di Chrome (atau serupa di browser pilihan Anda)?s
di%1$s
berarti bahwa argumen diperlakukan sebagai dan disajikan sebagai string. Ini dijelaskan secara rinci dalam manual php untuk fungsi sprintf: php.net/manual/en/function.sprintf.phpJawaban:
Ini adalah solusi saya dan bukan solusi yang disarankan yang disarankan di forum WordPress. Ternyata cukup mudah, tetapi melibatkan beberapa langkah.
1) Pergi ke wp-admin-> Pengaturan-> Diskusi dan matikan komentar berulir. Ini akan menonaktifkan threading, yang kita inginkan, tetapi juga akan menghilangkan kemampuan bagi kita untuk "membalas" komentar tertentu. Kita harus mengembalikannya.
2) Tambahkan skrip di bawah ini ke functions.php tema Anda atau ke plugin.
3) Pencetakan komentar ditangani oleh panggilan balik ke wp_list_comments . TwentyEleven menggunakan fungsi
twentyeleven_comment()
di dalamnyafunctions.php
. Jika tema Anda tidak memiliki panggilan balik, Anda harus membuatnya. Secara default, konten metode start_el dari kelas Walker_Comment di "wp-include / comment-template.php" digunakan. Salin atau salin panggil balik tema dan ganti nama fungsinyafake_threaded_comment
.3) Temukan fungsi wp_list_comments di tema Anda
comments.php
dan ubah callback. Seharusnya terlihat seperti:4) Sekarang kita akan sedikit menipu. Dalam panggilan balik itu, 'fake_threaded_comment', harus ada panggilan ke fungsi comment_reply_link . Kita perlu mengeditnya sehingga kita memberikan argumen 'kedalaman' dan 'max_depth' yang sulit. Kami sedang mengatur 'kedalaman' ke 1 dan max_depth ke 2. Ini akan mendapatkan tombol / tautan "Balas" kami.
5) Atur tautan ke komentar orang tua. Di samping fungsi panggilan balik Anda mungkin telah memperhatikan referensi
$comment
.$comment->comment_parent
adalah ID dari komentar yang dijawab danget_comment_link($comment->comment_parent)
memberikan URL dari komentar orang tua (bukan markup jangkar lengkap).get_comment($comment->comment_parent)
akan mendapatkan data komentar orang tua. Jadi, sesuatu seperti ...Itu dia. Anda sekarang dapat mengomentari komentar tertentu tetapi sekali diterbitkan komentar akan muncul di akhir atau di awal daftar komentar tergantung pada urutan pemuatan.
Diuji dengan TwentyEleven di WordPress 3.4.1 (sedikit usang tetapi sudah ada di server dev saya). Saya yakin ada hal-hal yang bisa dilakukan oleh tema atau plugin untuk memecahkan ini, tetapi saya tidak berpikir tema atau plugin yang berperilaku baik akan merusaknya.
Itu adalah perbuatan baik saya untuk hari itu. Tolong beri tahu saya jika ada masalah.
sumber