প্রস্তাবিত সম্পাদনাগুলি কীভাবে সক্ষম করবেন?


19

আমি আমার ওয়েবসাইটের যে কোনও ব্যবহারকারীকে কোনও পৃষ্ঠায় সম্পাদনার পরামর্শ দেওয়ার জন্য সক্ষম করার ধারণাটি পছন্দ করি। অনেকটা স্ট্যাক এক্সচেঞ্জের এডিট সিস্টেমের মতো তবে এর চেয়ে আলাদা যে যে কেউ নিবন্ধিত ব্যবহারকারী নয়, সম্পাদনা করতে সক্ষম হওয়া উচিত। সমস্ত সম্পাদনা একটি অনুমোদনের প্রক্রিয়া মাধ্যমে যেতে হবে।

আমি কীভাবে এটি বাস্তবায়ন করতে পারি?


1
আমি কীভাবে এটি করব তা জানি না তবে আমি মনে করি এটি সত্যিই সমস্যাযুক্ত হতে পারে। আমি মনে করি আপনি প্রচুর স্প্যাম পাবেন।
মার্টিন থোমা

3
আপনি কি ইতিবাচক যে আপনার ওয়েবসাইটের জন্য একটি ওয়ার্ডপ্রেস ইনস্টলেশন প্রয়োজন? আপনার পছন্দসই কার্যকারিতাটি মিডিয়াউইকি ইনস্টলেশনগুলির মতো শোনাচ্ছে । আপনার উভয় প্রতিষ্ঠানের উপকারিতা এবং কনসকে ওজন করা উচিত। মিডিয়াউইকি একটি ভাল বিকল্প।
মার্ক ডিঙ্গেইনা

আমি এই ধারণাটি নিয়ে কিছুক্ষণ আগে ঘুরে দাঁড়াচ্ছিলাম। উপলব্ধ একটি সমাধানের নিকটতমটি ছিল এই প্লাগইন: wordpress.org/support/plugin/post-forking তবে এটি খুব প্রাথমিক পর্যায়ে। প্লাগইন নিবন্ধিত ব্যবহারকারীদের মধ্যে সীমাবদ্ধ।
ক্রিস্টিন কুপার

আমরা এই জাতীয় কিছু দিকে কাজ করছি। আমরা পোস্টগুলির জন্য উইকিপিডিয়া-শৈলীর সম্পাদনার কল্পনা করতাম, "ইতিহাস" উইজেট সহ: github.com/publishpress/Revisionary/issues/13 আমরা এখনও সেখানে নেই, তবে প্রায় সমস্ত কাঠামোই স্থানে রয়েছে।
স্টিভবার্গ

উত্তর:


11

পোস্ট বিষয়বস্তু, শিরোনাম এবং লেখক পার্থক্য

যেমন কিছু মাস আগে সম্পর্কিত কিছু করতে হয়েছিল, বিষয়বস্তু বা শিরোনামে কোনও পরিবর্তন হয়েছে কিনা বা লেখক পরিবর্তন হয়েছে কিনা তা যাচাই করার জন্য এখানে সবচেয়ে সহজ এবং ভবিষ্যতের প্রমাণ উপায় (যা আমি জরিমানা করতে পারি):

// 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'];

আমার দৃশ্যের সংক্ষিপ্ত বিবরণ দেওয়ার জন্য: আমি একটি দূরবর্তী অবস্থান থেকে একটি রিমোট API এর মাধ্যমে পোস্টগুলি আনছিলাম। তারপরে আমি 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_approved0add_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, তাই সম্পাদিত পোস্ট আইডি সনাক্তকরণ সরাসরি এগিয়ে is

চূড়ান্ত নোট

আমি চূড়ান্ত প্লাগইন দেখতে চাই। এটি এখানে লিঙ্ক করুন :)


1
প্রস্তাবিত সম্পাদনাটি সংরক্ষণ করার জন্য মন্তব্য মেটা ব্যবহার করার wp_text_diff()জন্য এবং আসল তুলনার জন্য আমি এই প্রশ্নের জবাব দিচ্ছি । অন্যান্য উত্তরের জন্য আপভোটস।
ফুসিয়া

8

আমার ধারণা সহজ কিছু।

  • আপনি Edit Suggestionপোস্টের নীচে একটি লিঙ্ক তৈরি করতে পারেন যার একটি কাস্টম সংজ্ঞায়িত টেম্পলেট রয়েছে, এতে একটি পাঠ্যবাক্স (সম্ভবত কোনও সম্পাদক সহ) ব্যবহার করুন যা কাস্টম ট্যাক্সনোমির সাথে ডিফল্ট মানের সাথে যুক্ত থাকে post content

  • কোন পরিবর্তন contentতুলনা করা যেতে হবে original post content(খসড়া হিসাবে) জমা দেওয়ার এবং প্রবেশের পর CAPTCHA codeমত পার্থক্য আলগোরিদিম সঙ্গে পিএইচপি ইনলাইন-পরিবর্তন প্যাকেজ বা পাঠ্য পার্থক্য PEAR প্যাকেজ বা অন্যথায় অনুযায়ী একটি পিএইচপি ফাংশন ব্যবহার করে এই CSS এর সংমিশ্রণ না খুব দীর্ঘ গ্রন্থে জন্য।

  • তারপরে 3 টি কাস্টম মেটা বক্সগুলিতে মানগুলি সংরক্ষণ করে (সেই শৈলীতে ব্যাক-এন্ড অ্যাড / সম্পাদনা পৃষ্ঠাতে) প্রদর্শিত হবে

    1. আসল বিষয়বস্তু
    2. সম্পাদিত সংস্করণ
    3. ব্যবহারকারীর ডাকনাম এবং তাঁর ইমেল

    এবং পরে ব্যবহারের জন্য Post IDকোনও update_option()ফাংশন দিয়ে সঞ্চয় করা ।

  • সম্পাদিত সংস্করণ এবং অ্যাডমিনের গ্রহণযোগ্যতা পড়ার পরে, ফাংশন.এফপি-তে আপনি কোডিং করার সাথে পোস্টটি আসলটি প্রতিস্থাপন করা হবে।


কিছু নোট: (ক) "যেমন আপনি ফাংশন.এফপি কোড করেছেন" - এটির সাথে একমত নন। এটি প্লাগইন উপাদান। (খ) "পোস্ট সামগ্রীর ডিফল্ট মানের সাথে একটি কাস্টম ট্যাক্সনোমির সাথে সংযুক্ত" - একটি ট্যাক্সোনমি টার্ম / ট্যাক্সনের কেবলমাত্র একটি সম্ভাব্য মান থাকে যেখানে বিষয়বস্তু যে কোনও ক্ষেত্রে উপযুক্ত হবে: বিবরণ। এবং তারপরে পোস্ট আইডি সঞ্চয় করার জন্য আপনার একটি জায়গা দরকার। এটা কোথায় হবে? ডাব্লুপিএস কর ব্যবস্থার সীমাবদ্ধতার কারণে এটির কোনও স্থান নেই বলে আপনি কেবল আইডি শব্দটি সংরক্ষণ করতে পারবেন। তবে এটি কেবলমাত্র একটি (সীমাবদ্ধ) একমুখী সিস্টেম: পোস্ট> টার্ম ডেটা।
কায়সার

4

ভাল এটি বরং জটিল, একটি সঠিক উত্তর লিখতে যথেষ্ট সময় লাগবে। সুতরাং এটি আসল উত্তর নয় কেবল কিছু চিন্তা ..

এজ্যাক্সেরwp_update_post মাধ্যমে ওয়ার্ডপ্রেস বিল্ড ইন ব্যবহার করা আপনাকে প্রয়োজনীয় সংশোধন ইতিহাস দেবে তবে সম্পাদনাগুলি অনুমোদনের জন্য প্রয়োজনীয় সামর্থ্য নয়।

সম্পাদনাগুলি থেকে খসড়া তৈরি করা ডিফল্টরূপে সম্ভব হয় না তবে এখানে আলোচনা করা হয়েছে, কোনও প্রকাশিত পৃষ্ঠা বা পোস্টের সংশোধনী খসড়া করার কোনও উপায় আছে কি? আপনি কি workarouts ব্যবহার করেছেন?

আপনি চেষ্টা করতে পারেন এবং ফ্রন্ট-এন্ড এডিটরটি ব্যবহার করতে পারেন তবে সম্পাদনাগুলি প্রকাশের উপর আপনার কোনও নিয়ন্ত্রণ থাকবে না, তাই চেষ্টা করুন এবং এটি পুনর্বিবেচনার মতো অন্য প্লাগইন দিয়ে ম্যাস করুন যা অনুমতি ভিত্তিক সম্পাদনাগুলির অনুমতি দেয়, তারা একসাথে কাজ করবে কিনা আমার কোনও ধারণা নেই।

যদি সেগুলি না করে তবে আপনাকে উপরের ২ টি প্লাগইনের উপর ভিত্তি করে একটি প্লাগইন হ্যাক করতে হবে বা স্ক্র্যাচ থেকে কিছু লিখতে হবে।

আমার স্ক্র্যাচ পদ্ধতির কোনও বোতামটি অন্য পৃষ্ঠায় গিয়ে জেএসওএন ব্যবহার করে পোস্টের সামগ্রী / ডেটার আউটপুট দেয় যা অ্যাজাক্স এবং ডাব্লুওয়াইএসআইওয়াইজি সম্পাদকদের ব্যবহার করার সাথে কাজ করা সহজ । সেভ বোতামটি প্রকাশের পরিবর্তে একটি খসড়া হিসাবে পোস্ট করবে এবং সেভাবে সম্পাদনাগুলির উপরে আপনার নিয়ন্ত্রণ থাকবে (এটি কীভাবে সম্পাদন করতে হবে তা উপরের ডাব্লুপিএসই আলোচনা দেখুন, এটি বরং ভয়ঙ্কর)।

এটি করার সময় অতিরিক্ত জটিলতা যেমন স্যানিটাইজেশন, এনকোডিং, স্প্যাম, মিডিয়া হ্যান্ডলিং, কাস্টম ফিল্ডস, টাইমস্ট্যাম্পস, মেমরি ইত্যাদি The ।

পুনশ্চ. এটি একটি প্লাগইন জন্য ভাল ধারণা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.