पोस्ट सामग्री, शीर्षक और लेखक को मुश्किल करें
जैसा कि कुछ महीने पहले संबंधित कुछ करना था, यहां यह जांचने का सबसे आसान और सबसे भविष्य का सबूत तरीका है (कि मैं ठीक कर सकता हूं) कि क्या सामग्री या शीर्षक में बदलाव हुआ है या यदि लेखक बदल गया है:
// Update Title
'' !== wp_text_diff(
$el['post_title'],
$GLOBALS['post']->post_title
)
AND $GLOBALS['post']->post_title = $el['post_title'];
// Update Content
'' !== wp_text_diff(
$el['post_content'],
$GLOBALS['post']->post_content
)
AND $GLOBALS['post']->post_content = $el['post_content'];
// Update author
$GLOBALS['post']->post_author !== $el['post_author']
AND $GLOBALS['post']->post_author = $el['post_author'];
अपने परिदृश्य को संक्षेप में समझाने के लिए: मैं दूरस्थ स्थान से दूरस्थ एपीआई के माध्यम से पोस्ट ला रहा था। फिर मैंने global $post
एक पोस्ट लूप के दौरान, मूल डेटा या नए डेटा वाले को लौटा दिया । इस तरह मैं अन्य सभी पोस्ट मानों को सेट करने के लिए इधर-उधर हो गया, जिन्हें मुझे परिवर्तनों की जाँच करने की आवश्यकता नहीं थी।
संपादन का प्रस्ताव
मुख्य तथ्य यह है कि किसी स्थान की खोज करते समय ध्यान रखना चाहिए कि पोस्ट कंटेंट का कॉपी-एडिट (अस्थायी रूप से) बचाया जा सकता है, यह कंटेंट डीबी प्रविष्टि है longtext
। तो जिस जगह पर सुझाए गए संपादन को सहेजना है, उस जगह को उस आवश्यकता को पूरा करना चाहिए। टिप्पणियाँ करते हैं।
फिर एक अच्छा तथ्य यह है कि वे एक लूप में उन्हें अच्छी तरह से रखने के लिए एपीआई की पेशकश करते हैं, इसलिए यह आसानी से एकीकृत होता है, अत्यधिक अनुकूलन योग्य है और जल्दी से सेटअप हो सकता है। अंतिम लेकिन कम से कम अधिकांश विषय पहले से ही एकीकृत टिप्पणियों के साथ नहीं आते हैं इसलिए यह सिस्टम पर रंजकता के लिए आसान है और लगभग किसी भी उपलब्ध विषय में हुक करता है।
मैं सिर्फ (या तो) टिप्पणी फ़ॉर्म का विस्तार या परिवर्तन करने का सुझाव दूंगा। निम्नलिखित का उपयोग करें या कॉलबैक हुक के साथ अतिरिक्त फ़ील्ड जोड़ें comment_form_default_fields
।
<?php
// Add it for logged in users and guests:
add_action( 'comment_form_logged_in_after', 'wpse_proposed_edit_textarea' );
add_action( 'comment_form_after_fields', 'wpse_proposed_edit_textarea' );
function wpse_proposed_edit_textarea()
{
?>
<p class="comment-form-title">
<label for="wpse_propsed_edit">
<?php _e( 'Propose Edit', 'your_textdomain' ); ?>
</label>
<textarea name="wpse_propsed_edit" id="wpse_propsed_edit">
<?php the_content(); ?>
</textarea>
</p>
<input type="hidden" name="comment_approved" id="comment_approved" value="0" />
<?php
}
इसलिए मैंने इसे कतार में सेट करने के लिए एक मान के साथ एक hidden
फ़ील्ड जोड़ा है । निश्चित नहीं है कि यह काम करेगा या यदि यह (कोर) मूल्य वास्तव में मेटा डेटा है और बचत के दौरान उपयोग करके जोड़ा जाना है । यदि नहीं, तो आप कोड की निम्नलिखित पंक्तियों के साथ कुछ का उपयोग कर सकते हैंcomment_approved
0
add_comment_meta()
add_filter( 'pre_comment_approved' , 'wpse_pre_suggest_edit', 100, 2 );
function wpse_pre_suggest_edit( $approved , $commentdata )
{
// You might need to inspect $commentdata
// to determine approval, disapproval, or spam status
if ( ! empty( $commentdata['wpse_propsed_edit'] ) )
{
# Now add a filter to the comment post action, so we save a meta entry
add_action( 'comment_post', 'wpse_set_proposed_edit' );
return 0;
}
return 1;
}
// This function makes it easier for us to identify the comments by their meta value
function wpse_set_proposed_edit( $comment_id );
{
// Only run once
remove_filter( current_filter(), __FUNCTION__ );
add_comment_meta( $comment_id, 'proposed_edit', true, true );
}
व्यवस्थापक पक्ष पर टिप्पणियों को प्रदर्शित करना
यहां मैं एक साधारण वर्ग एक्सटेंशन और एक कस्टम व्यवस्थापक पृष्ठ के साथ जाऊंगा:
function wpse_add_proposed_edits_admin_page()
{
add_menu_page(
'Proposed Edits',
'Suggested Edits',
'activate_plugins',
'proposed_edits',
'wpse_proposed_edits_page_cb'
);
}
add_action( 'admin_menu', 'wpse_add_proposed_edits_admin_page' );
function wpse_proposed_edits_page_cb()
{
$proposed_edits_table = new WP_Proposed_Edits_Table();
$proposed_edits_table->prepare_items();
$proposed_edits_table->display();
}
class WP_Proposed_Edits_Table extends WP_List_Table
{
// Override List table default logic in here
}
अधिक जानकारी WPEngineer पर पाई जा सकती है ।
संपादन को मंजूरी
इसके बाद आप कस्टम क्रियाओं को जोड़ सकते हैं और प्रस्तावित कोड का उपयोग कर सकते हैं जो मैंने पहले कोड का उपयोग करके दिखाया था कि क्या कोई बदलाव है और फिर बस पोस्ट को अपडेट करें। टिप्पणी में एक कुंजी के साथ एक मूल्य होता है comment_post_ID
, इसलिए संपादित पदों की पहचान आईडी सीधे आगे है।
अंतिम नोट
मैं अंतिम प्लगइन भी देखना चाहता हूँ। कृपया इसे यहाँ लिंक करें :)